mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-24 09:13:50 +02:00
refactor utils
This commit is contained in:
@@ -274,13 +274,14 @@
|
||||
useModalStore,
|
||||
useUserStore
|
||||
} from '../../../stores';
|
||||
import { userImage, userStatusClass } from '../../../shared/utils';
|
||||
import { useUserDisplay } from '../../../composables/useUserDisplay';
|
||||
import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
import { database } from '../../../services/database';
|
||||
import { watchState } from '../../../services/watchState';
|
||||
|
||||
import configRepository from '../../../services/config';
|
||||
|
||||
const { userImage, userStatusClass } = useUserDisplay();
|
||||
const { t } = useI18n();
|
||||
const friendStore = useFriendStore();
|
||||
const userStore = useUserStore();
|
||||
|
||||
@@ -350,7 +350,8 @@
|
||||
} from '../../components/ui/dropdown-menu';
|
||||
import { useAppearanceSettingsStore, useFavoriteStore, useModalStore, useUserStore } from '../../stores';
|
||||
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '../../components/ui/resizable';
|
||||
import { debounce, userImage } from '../../shared/utils';
|
||||
import { debounce } from '../../shared/utils';
|
||||
import { useUserDisplay } from '../../composables/useUserDisplay';
|
||||
import { favoriteRequest } from '../../api';
|
||||
import { useFavoritesCardScaling } from './composables/useFavoritesCardScaling.js';
|
||||
import { useFavoritesGroupPanel } from './composables/useFavoritesGroupPanel.js';
|
||||
@@ -370,6 +371,7 @@
|
||||
import FavoritesToolbar from './components/FavoritesToolbar.vue';
|
||||
import FriendExportDialog from './dialogs/FriendExportDialog.vue';
|
||||
|
||||
const { userImage } = useUserDisplay();
|
||||
const friendGroupVisibilityOptions = ref(['public', 'friends', 'private']);
|
||||
|
||||
const {
|
||||
|
||||
@@ -93,10 +93,11 @@
|
||||
import { favoriteRequest } from '../../../api';
|
||||
import { removeLocalFriendFavorite } from '../../../coordinators/favoriteCoordinator';
|
||||
import { useFavoriteStore } from '../../../stores';
|
||||
import { userImage } from '../../../shared/utils';
|
||||
import { useUserDisplay } from '../../../composables/useUserDisplay';
|
||||
|
||||
import FavoritesMoveDropdown from './FavoritesMoveDropdown.vue';
|
||||
|
||||
const { userImage } = useUserDisplay();
|
||||
const props = defineProps({
|
||||
favorite: { type: Object, required: true },
|
||||
group: { type: Object, default: null },
|
||||
|
||||
@@ -125,7 +125,8 @@
|
||||
import { toast } from 'vue-sonner';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import { removeFromArray, userImage, userImageFull } from '../../../shared/utils';
|
||||
import { removeFromArray } from '../../../shared/utils';
|
||||
import { useUserDisplay } from '../../../composables/useUserDisplay';
|
||||
import { useFavoriteStore, useGalleryStore, useUserStore } from '../../../stores';
|
||||
import { addLocalFriendFavorite } from '../../../coordinators/favoriteCoordinator';
|
||||
import { favoriteRequest, userRequest } from '../../../api';
|
||||
@@ -133,6 +134,7 @@
|
||||
import { useVrcxVueTable } from '../../../lib/table/useVrcxVueTable';
|
||||
import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
|
||||
const { userImage, userImageFull } = useUserDisplay();
|
||||
const { t } = useI18n();
|
||||
|
||||
const emit = defineEmits(['update:friendImportDialogInput']);
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
import { useVirtualizer } from '@tanstack/vue-virtual';
|
||||
|
||||
import { Popover, PopoverContent, PopoverTrigger } from '../../components/ui/popover';
|
||||
import { useAppearanceSettingsStore, useFavoriteStore, useFriendStore } from '../../stores';
|
||||
import { useAppearanceSettingsStore, useFavoriteStore, useFriendStore, useLocationStore } from '../../stores';
|
||||
import { Slider } from '../../components/ui/slider';
|
||||
import { Switch } from '../../components/ui/switch';
|
||||
import { getFriendsLocations } from '../../shared/utils/location.js';
|
||||
@@ -175,6 +175,9 @@
|
||||
const favoriteStore = useFavoriteStore();
|
||||
const { favoriteFriendGroups, groupedByGroupKeyFavoriteFriends, localFriendFavorites } = storeToRefs(favoriteStore);
|
||||
|
||||
const locationStore = useLocationStore();
|
||||
const { lastLocation } = storeToRefs(locationStore);
|
||||
|
||||
const collapsedGroups = reactive(new Set());
|
||||
|
||||
const SEGMENTED_BASE_OPTIONS = [
|
||||
@@ -319,7 +322,7 @@
|
||||
.map((group, index) => {
|
||||
if (!Array.isArray(group) || group.length === 0) return null;
|
||||
const friends = group;
|
||||
const instanceId = getFriendsLocations(friends) || `instance-${index + 1}`;
|
||||
const instanceId = getFriendsLocations(friends, lastLocation.value) || `instance-${index + 1}`;
|
||||
return {
|
||||
instanceId: String(instanceId),
|
||||
friends
|
||||
|
||||
@@ -75,13 +75,14 @@
|
||||
import { toast } from 'vue-sonner';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import { isRealInstance, parseLocation, userImage, userStatusClass } from '../../../shared/utils';
|
||||
import { isRealInstance, parseLocation } from '../../../shared/utils';
|
||||
import { useGameStore, useLaunchStore, useLocationStore, useUserStore } from '../../../stores';
|
||||
import { instanceRequest, notificationRequest, queryRequest } from '../../../api';
|
||||
import { checkCanInvite, checkCanInviteSelf } from '../../../shared/utils/invite.js';
|
||||
import { useInviteChecks } from '../../../composables/useInviteChecks';
|
||||
import { useUserDisplay } from '../../../composables/useUserDisplay';
|
||||
|
||||
import Location from '../../../components/Location.vue';
|
||||
import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
|
||||
const { t } = useI18n();
|
||||
const { showSendBoopDialog } = useUserStore();
|
||||
@@ -89,6 +90,8 @@ import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
const { lastLocation, lastLocationDestination } = storeToRefs(useLocationStore());
|
||||
const { isGameRunning } = storeToRefs(useGameStore());
|
||||
const { currentUser } = storeToRefs(useUserStore());
|
||||
const { checkCanInvite, checkCanInviteSelf } = useInviteChecks();
|
||||
const { userImage, userStatusClass } = useUserDisplay();
|
||||
|
||||
const props = defineProps({
|
||||
friend: {
|
||||
|
||||
@@ -179,11 +179,13 @@
|
||||
|
||||
import { useAppearanceSettingsStore, useAuthStore, useVRCXUpdaterStore } from '../../stores';
|
||||
import { getLanguageName, languageCodes } from '../../localization';
|
||||
import { openExternalLink, userImage } from '../../shared/utils';
|
||||
import { openExternalLink } from '../../shared/utils';
|
||||
import { useUserDisplay } from '../../composables/useUserDisplay';
|
||||
import { watchState } from '../../services/watchState';
|
||||
|
||||
import LoginSettingsDialog from './Dialog/LoginSettingsDialog.vue';
|
||||
|
||||
const { userImage } = useUserDisplay();
|
||||
const { showVRCXUpdateDialog } = useVRCXUpdaterStore();
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
||||
@@ -27,10 +27,12 @@ import {
|
||||
} from 'lucide-vue-next';
|
||||
import { storeToRefs } from 'pinia';
|
||||
|
||||
import { checkCanInvite, formatDateFilter } from '../../shared/utils';
|
||||
import { formatDateFilter } from '../../shared/utils';
|
||||
import { checkCanInvite } from '../../shared/utils/invite';
|
||||
import { i18n } from '../../plugins';
|
||||
import {
|
||||
useGameStore,
|
||||
useInstanceStore,
|
||||
useLocationStore,
|
||||
useUiStore,
|
||||
useUserStore,
|
||||
@@ -70,10 +72,16 @@ export const createColumns = ({
|
||||
const { isGameRunning } = storeToRefs(useGameStore());
|
||||
const { isNotificationExpired } = useNotificationStore();
|
||||
|
||||
const { cachedInstances } = storeToRefs(useInstanceStore());
|
||||
|
||||
const canInvite = () => {
|
||||
const location = lastLocation.value?.location;
|
||||
return (
|
||||
Boolean(location) && isGameRunning.value && checkCanInvite(location)
|
||||
Boolean(location) && isGameRunning.value && checkCanInvite(location, {
|
||||
currentUserId: currentUser.value?.id,
|
||||
lastLocationStr: lastLocation.value?.location,
|
||||
cachedInstances: cachedInstances.value
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
import Timer from '@/components/Timer.vue';
|
||||
|
||||
import { useAppearanceSettingsStore, useFriendStore, useUserStore } from '../../../stores';
|
||||
import { userImage, userStatusClass } from '../../../shared/utils';
|
||||
import { useUserDisplay } from '../../../composables/useUserDisplay';
|
||||
|
||||
import '@/styles/status-icon.css';
|
||||
import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
@@ -90,6 +90,7 @@ import { confirmDeleteFriend } from '../../../coordinators/friendRelationshipCoo
|
||||
|
||||
const { hideNicknames } = storeToRefs(useAppearanceSettingsStore());
|
||||
const { isRefreshFriendsLoading, allFavoriteFriendIds } = storeToRefs(useFriendStore());
|
||||
const { userImage, userStatusClass } = useUserDisplay();
|
||||
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
@@ -204,9 +204,10 @@
|
||||
useUserStore
|
||||
} from '../../../stores';
|
||||
import { buildFriendRow, buildInstanceHeaderRow, buildToggleRow, estimateRowSize } from '../friendsSidebarUtils';
|
||||
import { getFriendsSortFunction, isRealInstance, userImage, userStatusClass } from '../../../shared/utils';
|
||||
import { getFriendsSortFunction, isRealInstance } from '../../../shared/utils';
|
||||
import { instanceRequest, notificationRequest, queryRequest, userRequest } from '../../../api';
|
||||
import { checkCanInvite, checkCanInviteSelf } from '../../../shared/utils/invite.js';
|
||||
import { useInviteChecks } from '../../../composables/useInviteChecks';
|
||||
import { useUserDisplay } from '../../../composables/useUserDisplay';
|
||||
import { getFriendsLocations } from '../../../shared/utils/location.js';
|
||||
import { parseLocation } from '../../../shared/utils';
|
||||
|
||||
@@ -246,6 +247,8 @@ import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
const { lastLocation, lastLocationDestination } = storeToRefs(useLocationStore());
|
||||
const { isGameRunning } = storeToRefs(useGameStore());
|
||||
const { currentUser } = storeToRefs(useUserStore());
|
||||
const { checkCanInvite, checkCanInviteSelf } = useInviteChecks();
|
||||
const { userImage, userStatusClass } = useUserDisplay();
|
||||
|
||||
const isFriendsGroupMe = ref(true);
|
||||
const isVIPFriends = ref(true);
|
||||
@@ -476,7 +479,7 @@ import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
if (!friendArr || !friendArr.length) return;
|
||||
const groupKey = friendArr?.[0]?.ref?.$location?.tag ?? `group-${groupIndex}`;
|
||||
rows.push(
|
||||
buildInstanceHeaderRow(getFriendsLocations(friendArr), friendArr.length, `instance:${groupKey}`)
|
||||
buildInstanceHeaderRow(getFriendsLocations(friendArr, lastLocation.value), friendArr.length, `instance:${groupKey}`)
|
||||
);
|
||||
friendArr.forEach((friend, idx) => {
|
||||
rows.push(
|
||||
|
||||
@@ -95,7 +95,8 @@
|
||||
ContextMenuTrigger
|
||||
} from '../../../components/ui/context-menu';
|
||||
import { buildGroupHeaderRow, buildGroupItemRow, estimateGroupRowSize, getGroupId } from '../groupsSidebarUtils';
|
||||
import { checkCanInviteSelf, convertFileUrlToImageUrl, parseLocation } from '../../../shared/utils';
|
||||
import { convertFileUrlToImageUrl, parseLocation } from '../../../shared/utils';
|
||||
import { useInviteChecks } from '../../../composables/useInviteChecks';
|
||||
import { useAppearanceSettingsStore, useGroupStore, useLaunchStore } from '../../../stores';
|
||||
import { instanceRequest } from '../../../api';
|
||||
|
||||
@@ -108,6 +109,7 @@
|
||||
const { isAgeGatedInstancesVisible } = storeToRefs(useAppearanceSettingsStore());
|
||||
const { showGroupDialog, sortGroupInstancesByInGame } = useGroupStore();
|
||||
const { groupInstances } = storeToRefs(useGroupStore());
|
||||
const { checkCanInviteSelf } = useInviteChecks();
|
||||
|
||||
const groupInstancesCfg = ref({});
|
||||
const scrollViewportRef = ref(null);
|
||||
|
||||
@@ -257,7 +257,8 @@
|
||||
import { useGameStore, useGroupStore, useLocationStore, useNotificationStore, useUserStore } from '../../../stores';
|
||||
import { showGroupDialog } from '../../../coordinators/groupCoordinator';
|
||||
import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
import { checkCanInvite, userImage } from '../../../shared/utils';
|
||||
import { useInviteChecks } from '../../../composables/useInviteChecks';
|
||||
import { useUserDisplay } from '../../../composables/useUserDisplay';
|
||||
|
||||
import Location from '../../../components/Location.vue';
|
||||
|
||||
@@ -275,6 +276,8 @@
|
||||
const { lastLocation } = storeToRefs(useLocationStore());
|
||||
const { isGameRunning } = storeToRefs(useGameStore());
|
||||
const { openNotificationLink, isNotificationExpired } = useNotificationStore();
|
||||
const { checkCanInvite } = useInviteChecks();
|
||||
const { userImage } = useUserDisplay();
|
||||
|
||||
const senderName = computed(() => {
|
||||
const n = props.notification;
|
||||
|
||||
@@ -59,7 +59,8 @@
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import { removeFromArray, userImage, userImageFull } from '../../../shared/utils';
|
||||
import { removeFromArray } from '../../../shared/utils';
|
||||
import { useUserDisplay } from '../../../composables/useUserDisplay';
|
||||
import { useFriendStore, useGalleryStore, useUserStore } from '../../../stores';
|
||||
import { createColumns } from './noteExportColumns.jsx';
|
||||
import { miscRequest } from '../../../api';
|
||||
@@ -68,6 +69,7 @@
|
||||
import * as workerTimers from 'worker-timers';
|
||||
import { showUserDialog } from '../../../coordinators/userCoordinator';
|
||||
|
||||
const { userImage, userImageFull } = useUserDisplay();
|
||||
const { t } = useI18n();
|
||||
|
||||
const { friends } = storeToRefs(useFriendStore());
|
||||
|
||||
Reference in New Issue
Block a user