package tui import ( "strings" tea "charm.land/bubbletea/v2" "gitgud.io/mike/mpv-manager/pkg/config" "gitgud.io/mike/mpv-manager/pkg/log" ) // handleResetManagerDataUpdate handles the reset-data confirmation sub-state: // an explicit y confirms the reset, n or Esc cancels back to config options. func (m *Model) handleResetManagerDataUpdate(msg tea.Msg) (*Model, tea.Cmd) { if keyMsg, ok := msg.(tea.KeyPressMsg); ok { switch keyCode(keyMsg) { case tea.KeyExtended: switch string(keyTextRunes(keyMsg)) { case "y", "Y": return m.confirmResetManagerData() case "n", "N": m.state = StateConfigOptions return m, nil } case tea.KeyEsc: m.state = StateConfigOptions return m, nil } } return m, nil } // confirmResetManagerData resets the mpv-manager.json configuration to // defaults (config.ResetToDefaults writes a backup first) and refreshes the // menus, since installed app tracking is cleared by the reset. func (m *Model) confirmResetManagerData() (*Model, tea.Cmd) { if err := config.ResetToDefaults(); err != nil { log.Error("Failed to reset MPV Manager data: " + err.Error()) m.resetManagerDataStatusMsg = "✗ Failed to reset MPV Manager data: " + err.Error() } else { log.Info("MPV Manager data reset to defaults") m.resetManagerDataStatusMsg = "✓ MPV Manager data has been reset to defaults (backup saved)" m.RefreshMainMenu() } m.setupConfigOptionsList() m.state = StateConfigOptions return m, nil } // resetManagerDataView renders the reset-data confirmation screen. func (m Model) resetManagerDataView() string { var content strings.Builder content.WriteString(titleStyle.Render("🗑️ Reset MPV Manager Data")) content.WriteString("\n") content.WriteString(subtitleStyle.Render("═══════════════════════")) content.WriteString("\n\n") content.WriteString(warningStyle.Render("This will reset the mpv-manager.json configuration file to default values.")) content.WriteString("\n\n") content.WriteString(infoStyle.Render("This includes installed app tracking, custom install path,")) content.WriteString("\n") content.WriteString(infoStyle.Render("UI selections, hardware decoder preference, and shortcut settings.")) content.WriteString("\n") content.WriteString(infoStyle.Render("Language preferences in mpv.conf are not affected.")) content.WriteString("\n\n") content.WriteString(infoStyle.Render("A backup of the current configuration is created before resetting.")) content.WriteString("\n\n") content.WriteString(infoStyle.Render("Press ")) content.WriteString(subtitleStyle.Render("y")) content.WriteString(infoStyle.Render(" to confirm, ")) content.WriteString(subtitleStyle.Render("n")) content.WriteString(infoStyle.Render(" or ")) content.WriteString(subtitleStyle.Render("Esc")) content.WriteString(infoStyle.Render(" to cancel")) return content.String() }