refactor: remove dead code, DRY calendar navigation and helpers

- Fix Jalali calendar weekday offset in buildCalendarMonth
- Remove unused gregorianDateKey function and PairCount field
- Replace inline export month title with formatMonthTitle
- Extract navMonth helper for prev/next month navigation
- Extract sendOrEdit helper for send-vs-edit message pattern
- Extract monthGregorianRange helper to simplify editCalendar 3-way switch
- Replace export displayDate conversion with formatDateForCalendar
This commit is contained in:
2026-06-24 10:54:06 +03:30
parent 67eae5ffa3
commit 577aee91fb
4 changed files with 203 additions and 129 deletions

View File

@@ -211,9 +211,12 @@ func buildCalendarMonth(cal string, year, month int) calMonth {
gy, gm, gd := jalaliToGregorian(year, month, 1)
dow := dayOfWeekGregorian(gy, gm, gd)
_ = dow
startOffset := (dow + 1) % 7
var days []calDay
for i := 0; i < startOffset; i++ {
days = append(days, calDay{dayNum: 0, date: ""})
}
for d := 1; d <= totalDays; d++ {
gy, gm, gd = jalaliToGregorian(year, month, d)
days = append(days, calDay{
@@ -267,10 +270,6 @@ func buildCalendarMonth(cal string, year, month int) calMonth {
return calMonth{title: title, weekDays: weekDays, days: days}
}
func gregorianDateKey(year, month, day int) string {
return fmt.Sprintf("%04d-%02d-%02d", year, month, day)
}
func parseGregorianDateKey(key string) (int, int, int) {
var y, m, d int
fmt.Sscanf(key, "%04d-%02d-%02d", &y, &m, &d)
@@ -290,3 +289,27 @@ func formatDateForCalendar(date, calType string) string {
return date
}
}
// monthGregorianRange returns the Gregorian start and end date strings
// for a given calendar month (cal=gregorian|jalali|hijri).
func monthGregorianRange(cal string, year, month int) (start, end string) {
switch cal {
case "jalali":
gy, gm, gd := jalaliToGregorian(year, month, 1)
start = fmt.Sprintf("%04d-%02d-%02d", gy, gm, gd)
lastDay := monthLenJalali(year, month)
gy, gm, gd = jalaliToGregorian(year, month, lastDay)
end = fmt.Sprintf("%04d-%02d-%02d", gy, gm, gd)
case "hijri":
gy, gm, gd := hijriToGregorian(year, month, 1)
start = fmt.Sprintf("%04d-%02d-%02d", gy, gm, gd)
lastDay := monthLenHijri(year, month)
gy, gm, gd = hijriToGregorian(year, month, lastDay)
end = fmt.Sprintf("%04d-%02d-%02d", gy, gm, gd)
default:
start = fmt.Sprintf("%04d-%02d-%02d", year, month, 1)
lastDay := monthLenGreg(year, month)
end = fmt.Sprintf("%04d-%02d-%02d", year, month, lastDay)
}
return
}