maotoumao/MusicFree · warning

toast.rememberToSave

Error message

toast.rememberToSave

What it means

This is not a thrown exception but a localized warning toast: "Remember to save~" (zh: 请记得保存). The Bottom bar of the music list editor shows it after the user taps the button that removes all checked items from the draft playlist, warning them the removal only lives in the editor state and is not persisted until they explicitly save.

Source

Thrown at src/pages/musicListEditor/components/bottom.tsx:94

                        resetSelectedIndices();
                    }
                }}
            />
            <BottomIcon
                icon="trash-outline"
                title={t("common.delete")}
                color={
                    selectedItems.length && musicSheet?.id
                        ? "text"
                        : "textSecondary"
                }
                onPress={() => {
                    if (selectedItems.length && musicSheet?.id) {
                        setEditingMusicList(
                            produce(prev => prev.filter(_ => !_.checked)),
                        );
                        setMusicListChanged(true);
                        Toast.warn(t("toast.rememberToSave"));
                    }
                }}
            />
        </View>
    );
}

interface IBottomIconProps {
    icon: IIconName;
    title: string;
    color?: "text" | "textSecondary";
    onPress: () => void;
}
function BottomIcon(props: IBottomIconProps) {
    const { icon, title, onPress, color = "text" } = props;
    const colors = useColors();
    return (
        <Pressable

View on GitHub (pinned to d118b18b3d)

Solutions

  1. After removing checked items, explicitly press the save button in the editor to persist the filtered playlist to the music sheet.
  2. Check musicListChanged before leaving the editor and save or discard to avoid losing the removal.
  3. If the toast is confusing UX, make the save flow automatic or navigate the user to save after batch removal.
  4. If the toast text is wrong or untranslated, verify the "toast.rememberToSave" key exists in all files under src/core/i18n/languages/.

Example fix

// before
Toast.warn(t("toast.rememberToSave"));
// after
// keep the warning, then persist immediately if desired
Toast.warn(t("toast.rememberToSave"));
await saveMusicList(musicSheet.id, nextList); // explicit persistence
Defensive patterns

Strategy: validation

Validate before calling

if (selectedItems.length && musicSheet?.id) {
    setEditingMusicList(produce(prev => prev.filter(_ => !_.checked)));
    setMusicListChanged(true);
    Toast.warn(t("toast.rememberToSave"));
}

Type guard

const canRemove =
    Array.isArray(selectedItems) && selectedItems.length > 0 &&
    typeof musicSheet?.id === "string" && musicSheet.id.length > 0;

Prevention

When it happens

Trigger: User presses the removal button in the music list editor Bottom bar while selectedItems.length > 0 and musicSheet?.id is set; the checked rows are filtered out of the draft via produce() and musicListChanged is set true, then this warning toast fires.

Common situations: Bulk-removing songs from a playlist then closing the editor without saving and losing changes; users unfamiliar with the explicit save step expect the removal to persist immediately.

Related errors


AI-assisted analysis of maotoumao/MusicFree@d118b18b3d (2026-08-30). Data as JSON: /api/errors/0280127c6365fab6. Report an issue: GitHub.