|
5 | 5 | from datetime import datetime, timezone |
6 | 6 | from config_paths import CONFIG_PATH, REMINDERS_DB_PATH |
7 | 7 | import db_utils |
| 8 | +from db_utils import get_past_reminders_for_user |
8 | 9 |
|
9 | 10 | # Load config to get MaxAlertsPerUser |
10 | 11 | config = configparser.ConfigParser() |
11 | 12 | config.read(CONFIG_PATH) |
| 13 | +SHOW_PAST_REMINDERS_COUNT = config.getint('Reminders', 'ShowPastRemindersCount', fallback=0) |
12 | 14 |
|
13 | 15 | try: |
14 | 16 | MAX_ALERTS_PER_USER = config.getint('Reminders', 'MaxAlertsPerUser', fallback=30) |
@@ -81,19 +83,54 @@ async def handle_view_reminders(user_id): |
81 | 83 | logger.error("Attempt to view reminders but DB not available!") |
82 | 84 | return "Error: DB not available. Cannot view reminders." |
83 | 85 |
|
84 | | - reminders = db_utils.get_pending_reminders_for_user(REMINDERS_DB_PATH, user_id) |
85 | | - if not reminders: |
86 | | - logger.info(f"User {user_id} has no pending reminders.") |
87 | | - return "You currently have no pending reminders." |
88 | | - |
89 | | - logger.info(f"User {user_id} is viewing {len(reminders)} reminders.") |
90 | | - lines = ["Here are your current reminders:"] |
91 | | - for r in reminders: |
92 | | - rid = r['reminder_id'] |
93 | | - text = r['reminder_text'] |
94 | | - due_utc = r['due_time_utc'] |
95 | | - lines.append(f"• Reminder #{rid}: due {due_utc}, text: '{text}'") |
96 | | - return "\n".join(lines) |
| 86 | + # 1) Get the pending |
| 87 | + pending_reminders = db_utils.get_pending_reminders_for_user(REMINDERS_DB_PATH, user_id) |
| 88 | + if pending_reminders: |
| 89 | + lines = ["<b>Your current (pending) reminders:</b>"] |
| 90 | + for idx, r in enumerate(pending_reminders, start=1): |
| 91 | + rid = r['reminder_id'] |
| 92 | + text = r['reminder_text'] |
| 93 | + due_utc = r['due_time_utc'] |
| 94 | + lines.append(f"• Reminder #{idx} (ID {rid}) due <i>{due_utc}</i>\n “{text}”") |
| 95 | + pending_section = "\n".join(lines) |
| 96 | + else: |
| 97 | + pending_section = "You have no <b>pending</b> reminders." |
| 98 | + |
| 99 | + # 2) Optionally get the past ones |
| 100 | + if SHOW_PAST_REMINDERS_COUNT > 0: |
| 101 | + past = get_past_reminders_for_user(REMINDERS_DB_PATH, user_id, SHOW_PAST_REMINDERS_COUNT) |
| 102 | + if past: |
| 103 | + lines = [f"<b>Up to {SHOW_PAST_REMINDERS_COUNT} most recent past reminders:</b>"] |
| 104 | + for idx, r in enumerate(past, start=1): |
| 105 | + rid = r['reminder_id'] |
| 106 | + text = r['reminder_text'] |
| 107 | + due_utc = r['due_time_utc'] |
| 108 | + status = r['status'] |
| 109 | + lines.append(f"• (ID {rid}) was <i>{status}</i> at {due_utc}, text: “{text}”") |
| 110 | + past_section = "\n".join(lines) |
| 111 | + else: |
| 112 | + past_section = "(No past reminders found.)" |
| 113 | + else: |
| 114 | + past_section = "" # or omit entirely |
| 115 | + |
| 116 | + # 3) Combine them for your final message |
| 117 | + full_msg = f"{pending_section}\n\n{past_section}".strip() |
| 118 | + return full_msg |
| 119 | + |
| 120 | + # // old logic; no past reminders |
| 121 | + # reminders = db_utils.get_pending_reminders_for_user(REMINDERS_DB_PATH, user_id) |
| 122 | + # if not reminders: |
| 123 | + # logger.info(f"User {user_id} has no pending reminders.") |
| 124 | + # return "You currently have no pending reminders." |
| 125 | + |
| 126 | + # logger.info(f"User {user_id} is viewing {len(reminders)} reminders.") |
| 127 | + # lines = ["Here are your current reminders:"] |
| 128 | + # for r in reminders: |
| 129 | + # rid = r['reminder_id'] |
| 130 | + # text = r['reminder_text'] |
| 131 | + # due_utc = r['due_time_utc'] |
| 132 | + # lines.append(f"• Reminder #{rid}: due {due_utc}, text: '{text}'") |
| 133 | + # return "\n".join(lines) |
97 | 134 |
|
98 | 135 |
|
99 | 136 | async def handle_delete_reminder(user_id, reminder_id): |
|
0 commit comments