Files
VRCX/src/shared/utils/instance.js
2025-09-30 14:09:14 +13:00

68 lines
1.6 KiB
JavaScript

import { instanceRequest } from '../../api';
import { parseLocation } from './location';
/**
*
* @param {object} instance
*/
function refreshInstancePlayerCount(instance) {
const L = parseLocation(instance);
if (L.isRealInstance) {
instanceRequest.getInstance({
worldId: L.worldId,
instanceId: L.instanceId
});
}
}
/**
*
* @param {string} instanceId
* @returns
*/
function isRealInstance(instanceId) {
if (!instanceId) {
return false;
}
switch (instanceId) {
case ':':
case 'offline':
case 'offline:offline':
case 'private':
case 'private:private':
case 'traveling':
case 'traveling:traveling':
return false;
}
if (instanceId.startsWith('local')) {
return false;
}
return true;
}
/**
*
* @param {object} instance
* @returns {string}
*/
function getLaunchURL(instance) {
const L = instance;
if (L.instanceId) {
if (L.shortName) {
return `https://vrchat.com/home/launch?worldId=${encodeURIComponent(
L.worldId
)}&instanceId=${encodeURIComponent(
L.instanceId
)}&shortName=${encodeURIComponent(L.shortName)}`;
}
return `https://vrchat.com/home/launch?worldId=${encodeURIComponent(
L.worldId
)}&instanceId=${encodeURIComponent(L.instanceId)}`;
}
return `https://vrchat.com/home/launch?worldId=${encodeURIComponent(
L.worldId
)}`;
}
export { refreshInstancePlayerCount, isRealInstance, getLaunchURL };