Proposal
让 useReminderPermissionsOnLaunch.ts 里任意一项权限处理完之后都能触发续弹下一项,不只是"用户确认悬浮窗/全屏通知/电池优化"这一条兜底分支。
Background
关联 #161(本地提醒送达)。promptNext() 内部除了上述兜底分支外,其它每条分支(直接请求通知、跳设置、弹框拒绝、定位授权成功/失败)都在 try 块里直接 return;负责"继续弹下一项"的 setTimeout(runPrompt, 250) 写在 try/finally 之后——JS 里 try 内的 return 会跳过其后语句,这行续弹逻辑对上述分支全是死代码,实际效果是权限申请弹完第一项就停了。
Workarounds
无——用户得自己反复重开 App 或去系统设置逐项手动开,跟功能不可用体验相同。
验收标准
本轮不做
不改权限申请的顺序、话术或交互设计,只修续弹的调用时机。
边界
只改 frontend/src/features/reminder/presentation/useReminderPermissionsOnLaunch.ts 及其测试。
规格:MiniSpec
Proposal
让 useReminderPermissionsOnLaunch.ts 里任意一项权限处理完之后都能触发续弹下一项,不只是"用户确认悬浮窗/全屏通知/电池优化"这一条兜底分支。
Background
关联 #161(本地提醒送达)。promptNext() 内部除了上述兜底分支外,其它每条分支(直接请求通知、跳设置、弹框拒绝、定位授权成功/失败)都在 try 块里直接 return;负责"继续弹下一项"的 setTimeout(runPrompt, 250) 写在 try/finally 之后——JS 里 try 内的 return 会跳过其后语句,这行续弹逻辑对上述分支全是死代码,实际效果是权限申请弹完第一项就停了。
Workarounds
无——用户得自己反复重开 App 或去系统设置逐项手动开,跟功能不可用体验相同。
验收标准
本轮不做
不改权限申请的顺序、话术或交互设计,只修续弹的调用时机。
边界
只改 frontend/src/features/reminder/presentation/useReminderPermissionsOnLaunch.ts 及其测试。
规格:MiniSpec