Enable adding friends to multiple local favorite groups and update instance activity charts to include all favorite friends.

This commit is contained in:
pa
2026-02-14 18:00:42 +09:00
parent 4e552bf3b9
commit ad3346427f
5 changed files with 34 additions and 35 deletions
@@ -186,8 +186,8 @@
import BackToTop from '@/components/BackToTop.vue';
import dayjs from 'dayjs';
import { useAppearanceSettingsStore, useFavoriteStore, useFriendStore, useUserStore } from '../../../stores';
import { Popover, PopoverContent, PopoverTrigger } from '../../../components/ui/popover';
import { useAppearanceSettingsStore, useFriendStore, useUserStore } from '../../../stores';
import { parseLocation, timeToText } from '../../../shared/utils';
import { Slider } from '../../../components/ui/slider';
import { Switch } from '../../../components/ui/switch';
@@ -204,11 +204,32 @@
const appearanceSettingsStore = useAppearanceSettingsStore();
const friendStore = useFriendStore();
const favoriteStore = useFavoriteStore();
const { isDarkMode, dtHour12 } = storeToRefs(appearanceSettingsStore);
const { localFavoriteFriends, friends } = storeToRefs(friendStore);
const { friends } = storeToRefs(friendStore);
const { cachedFavorites, localFriendFavorites } = storeToRefs(favoriteStore);
const { currentUser } = storeToRefs(useUserStore());
const { t } = useI18n();
// All favorite friends (remote + local)
const allFavoriteFriends = computed(() => {
const set = new Set();
for (const ref of cachedFavorites.value.values()) {
if (ref.type === 'friend') {
set.add(ref.favoriteId);
}
}
for (const group in localFriendFavorites.value) {
const userIds = localFriendFavorites.value[group];
if (userIds) {
for (const id of userIds) {
set.add(id);
}
}
}
return set;
});
const instanceActivityRef = ref(null);
const instanceActivityResizeObserver = new ResizeObserver(() => {
@@ -373,7 +394,7 @@
onMounted(async () => {
try {
getAllDateOfActivity();
await getActivityData(selectedDate, currentUser, friends, localFavoriteFriends, () =>
await getActivityData(selectedDate, currentUser, friends, allFavoriteFriends, () =>
handleIntersectionObserver(activityDetailChartRef)
);
await getWorldNameData();
@@ -398,7 +419,7 @@
reloadData = async function () {
isLoading.value = true;
try {
await getActivityData(selectedDate, currentUser, friends, localFavoriteFriends, () =>
await getActivityData(selectedDate, currentUser, friends, allFavoriteFriends, () =>
handleIntersectionObserver(activityDetailChartRef)
);
await getWorldNameData();
@@ -63,7 +63,8 @@ export function useInstanceActivityData() {
isFriend:
item.user_id === currentUser.value.id
? null
: friends.value.has(item.user_id),
: friends.value.has(item.user_id) ||
localFavoriteFriends.value.has(item.user_id),
isFavorite:
item.user_id === currentUser.value.id
? null