Relocate sidebar settings from the Appearance tab to a new popover within the Sidebar

This commit is contained in:
pa
2026-02-14 20:04:48 +09:00
parent ad3346427f
commit 2e627ba6f5
7 changed files with 349 additions and 220 deletions
+15 -27
View File
@@ -292,9 +292,12 @@ export const useFavoriteStore = defineStore('Favorite', () => {
if (
args.params.type === 'friend' &&
generalSettingsStore.localFavoriteFriendsGroups.includes(
'friend:' + args.params.tags
)
(!generalSettingsStore.localFavoriteFriendsGroups.some(
(key) => !key.startsWith('local:')
) ||
generalSettingsStore.localFavoriteFriendsGroups.includes(
'friend:' + args.params.tags
))
) {
friendStore.updateLocalFavoriteFriends();
}
@@ -793,17 +796,19 @@ export const useFavoriteStore = defineStore('Favorite', () => {
};
cachedFavorites.set(ref.id, ref);
cachedFavoritesByObjectId.set(ref.favoriteId, ref);
ref.$groupKey = `${ref.type}:${String(ref.tags[0])}`;
if (
ref.type === 'friend' &&
(generalSettingsStore.localFavoriteFriendsGroups.length === 0 ||
(!generalSettingsStore.localFavoriteFriendsGroups.some(
(key) => !key.startsWith('local:')
) ||
generalSettingsStore.localFavoriteFriendsGroups.includes(
ref.groupKey
ref.$groupKey
))
) {
friendStore.localFavoriteFriends.add(ref.favoriteId);
friendStore.updateSidebarFavorites();
}
ref.$groupKey = `${ref.type}:${String(ref.tags[0])}`;
if (!isFavoriteLoading.value) {
countFavoriteGroups();
}
@@ -1551,13 +1556,7 @@ export const useFavoriteStore = defineStore('Favorite', () => {
if (userDialog.visible && userDialog.id === userId) {
userDialog.isFavorite = true;
}
if (
generalSettingsStore.localFavoriteFriendsGroups.includes(
`local:${group}`
)
) {
friendStore.updateLocalFavoriteFriends();
}
friendStore.updateLocalFavoriteFriends();
}
/**
@@ -1612,13 +1611,7 @@ export const useFavoriteStore = defineStore('Favorite', () => {
getCachedFavoritesByObjectId(userId) ||
isInAnyLocalFriendGroup(userId);
}
if (
generalSettingsStore.localFavoriteFriendsGroups.includes(
`local:${group}`
)
) {
friendStore.updateLocalFavoriteFriends();
}
friendStore.updateLocalFavoriteFriends();
}
/**
@@ -1627,13 +1620,7 @@ export const useFavoriteStore = defineStore('Favorite', () => {
function deleteLocalFriendFavoriteGroup(group) {
delete localFriendFavorites[group];
database.deleteFriendFavoriteGroup(group);
if (
generalSettingsStore.localFavoriteFriendsGroups.includes(
`local:${group}`
)
) {
friendStore.updateLocalFavoriteFriends();
}
friendStore.updateLocalFavoriteFriends();
}
/**
@@ -1701,6 +1688,7 @@ export const useFavoriteStore = defineStore('Favorite', () => {
}
replaceReactiveObject(localFriendFavorites, localFavorites);
friendStore.updateLocalFavoriteFriends();
}
/**
+12 -13
View File
@@ -305,26 +305,25 @@ export const useFriendStore = defineStore('Friend', () => {
function updateLocalFavoriteFriends() {
const favoriteStore = useFavoriteStore();
localFavoriteFriends.clear();
const groups = generalSettingsStore.localFavoriteFriendsGroups;
const hasRemoteGroupFilter = groups.some(
(key) => !key.startsWith('local:')
);
// Remote favorites: filter by selected remote groups
for (const ref of favoriteStore.cachedFavorites.values()) {
if (
ref.type === 'friend' &&
(generalSettingsStore.localFavoriteFriendsGroups.includes(
ref.$groupKey
) ||
generalSettingsStore.localFavoriteFriendsGroups.length ===
0)
(!hasRemoteGroupFilter || groups.includes(ref.$groupKey))
) {
localFavoriteFriends.add(ref.favoriteId);
}
}
for (const selectedKey of generalSettingsStore.localFavoriteFriendsGroups) {
if (selectedKey.startsWith('local:')) {
const groupName = selectedKey.slice(6);
const userIds = favoriteStore.localFriendFavorites[groupName];
if (userIds) {
for (let i = 0; i < userIds.length; ++i) {
localFavoriteFriends.add(userIds[i]);
}
// Local favorites: always include all
for (const groupName in favoriteStore.localFriendFavorites) {
const userIds = favoriteStore.localFriendFavorites[groupName];
if (userIds) {
for (let i = 0; i < userIds.length; ++i) {
localFavoriteFriends.add(userIds[i]);
}
}
}
+18
View File
@@ -77,6 +77,7 @@ export const useAppearanceSettingsStore = defineStore(
const isSidebarGroupByInstance = ref(true);
const isHideFriendsInSameInstance = ref(false);
const isSidebarDivideByFriendGroup = ref(false);
const sidebarFavoriteGroups = ref([]);
const hideUserNotes = ref(false);
const hideUserMemos = ref(false);
const hideUnfriends = ref(false);
@@ -150,6 +151,7 @@ export const useAppearanceSettingsStore = defineStore(
isSidebarGroupByInstanceConfig,
isHideFriendsInSameInstanceConfig,
isSidebarDivideByFriendGroupConfig,
sidebarFavoriteGroupsConfig,
hideUserNotesConfig,
hideUserMemosConfig,
hideUnfriendsConfig,
@@ -205,6 +207,7 @@ export const useAppearanceSettingsStore = defineStore(
'VRCX_sidebarDivideByFriendGroup',
true
),
configRepository.getString('VRCX_sidebarFavoriteGroups', '[]'),
configRepository.getBool('VRCX_hideUserNotes', false),
configRepository.getBool('VRCX_hideUserMemos', false),
configRepository.getBool('VRCX_hideUnfriends', false),
@@ -293,6 +296,9 @@ export const useAppearanceSettingsStore = defineStore(
isHideFriendsInSameInstanceConfig;
isSidebarDivideByFriendGroup.value =
isSidebarDivideByFriendGroupConfig;
sidebarFavoriteGroups.value = JSON.parse(
sidebarFavoriteGroupsConfig
);
hideUserNotes.value = hideUserNotesConfig;
hideUserMemos.value = hideUserMemosConfig;
hideUnfriends.value = hideUnfriendsConfig;
@@ -701,6 +707,16 @@ export const useAppearanceSettingsStore = defineStore(
isSidebarDivideByFriendGroup.value
);
}
/**
* @param {string[]} value
*/
function setSidebarFavoriteGroups(value) {
sidebarFavoriteGroups.value = value;
configRepository.setString(
'VRCX_sidebarFavoriteGroups',
JSON.stringify(value)
);
}
function setHideUserNotes() {
hideUserNotes.value = !hideUserNotes.value;
configRepository.setBool('VRCX_hideUserNotes', hideUserNotes.value);
@@ -958,6 +974,7 @@ export const useAppearanceSettingsStore = defineStore(
isSidebarGroupByInstance,
isHideFriendsInSameInstance,
isSidebarDivideByFriendGroup,
sidebarFavoriteGroups,
hideUserNotes,
hideUserMemos,
hideUnfriends,
@@ -995,6 +1012,7 @@ export const useAppearanceSettingsStore = defineStore(
setIsSidebarGroupByInstance,
setIsHideFriendsInSameInstance,
setIsSidebarDivideByFriendGroup,
setSidebarFavoriteGroups,
setHideUserNotes,
setHideUserMemos,
setHideUnfriends,