feat:分组下个性化数据独立

This commit is contained in:
hzm
2026-03-01 21:03:42 +08:00
parent 8bcffffaa7
commit 92d22b0bef
4 changed files with 265 additions and 195 deletions

View File

@@ -1751,15 +1751,44 @@ export default function HomePage() {
setGroups(next);
storageHelper.setItem('groups', JSON.stringify(next));
if (currentTab === id) setCurrentTab('all');
try {
const raw = window.localStorage.getItem('customSettings');
const parsed = raw ? JSON.parse(raw) : {};
if (parsed && typeof parsed === 'object' && parsed[id] !== undefined) {
delete parsed[id];
window.localStorage.setItem('customSettings', JSON.stringify(parsed));
triggerCustomSettingsSync();
}
} catch { }
};
const handleUpdateGroups = (newGroups) => {
const removedIds = groups.filter((g) => !newGroups.find((ng) => ng.id === g.id)).map((g) => g.id);
setGroups(newGroups);
storageHelper.setItem('groups', JSON.stringify(newGroups));
// 如果当前选中的分组被删除了,切换回“全部”
if (currentTab !== 'all' && currentTab !== 'fav' && !newGroups.find(g => g.id === currentTab)) {
setCurrentTab('all');
}
if (removedIds.length > 0) {
try {
const raw = window.localStorage.getItem('customSettings');
const parsed = raw ? JSON.parse(raw) : {};
if (parsed && typeof parsed === 'object') {
let changed = false;
removedIds.forEach((groupId) => {
if (parsed[groupId] !== undefined) {
delete parsed[groupId];
changed = true;
}
});
if (changed) {
window.localStorage.setItem('customSettings', JSON.stringify(parsed));
triggerCustomSettingsSync();
}
}
} catch { }
}
};
const handleAddFundsToGroup = (codes) => {
@@ -3906,7 +3935,7 @@ export default function HomePage() {
style={{
width: '100%',
height: '48px',
border: '2px dashed rgba(255,255,255,0.1)',
border: '2px dashed var(--border)',
background: 'transparent',
borderRadius: '12px',
color: 'var(--muted)',
@@ -3926,7 +3955,7 @@ export default function HomePage() {
e.currentTarget.style.background = 'rgba(34, 211, 238, 0.05)';
}}
onMouseLeave={(e) => {
e.currentTarget.style.borderColor = 'rgba(255,255,255,0.1)';
e.currentTarget.style.borderColor = 'var(--border)';
e.currentTarget.style.color = 'var(--muted)';
e.currentTarget.style.background = 'transparent';
}}