Files
VRCX/src/shared/utils/invite.js
2025-07-22 01:53:48 +12:00

69 lines
1.6 KiB
JavaScript

import {
useFriendStore,
useInstanceStore,
useLocationStore,
useUserStore
} from '../../stores';
import { parseLocation } from './location';
/**
*
* @param {string} location
* @returns
*/
function checkCanInvite(location) {
if (!location) {
return false;
}
const userStore = useUserStore();
const locationStore = useLocationStore();
const instanceStore = useInstanceStore();
const L = parseLocation(location);
const instance = instanceStore.cachedInstances.get(location);
if (instance?.closedAt) {
return false;
}
if (
L.accessType === 'public' ||
L.accessType === 'group' ||
L.userId === userStore.currentUser.id
) {
return true;
}
if (L.accessType === 'invite' || L.accessType === 'friends') {
return false;
}
if (locationStore.lastLocation.location === location) {
return true;
}
return false;
}
/**
*
* @param {string} location
* @returns
*/
function checkCanInviteSelf(location) {
if (!location) {
return false;
}
const userStore = useUserStore();
const instanceStore = useInstanceStore();
const friendStore = useFriendStore();
const L = parseLocation(location);
const instance = instanceStore.cachedInstances.get(location);
if (instance?.closedAt) {
return false;
}
if (L.userId === userStore.currentUser.id) {
return true;
}
if (L.accessType === 'friends' && !friendStore.friends.has(L.userId)) {
return false;
}
return true;
}
export { checkCanInvite, checkCanInviteSelf };