mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-13 11:53:51 +02:00
147 lines
3.8 KiB
JavaScript
147 lines
3.8 KiB
JavaScript
import { request } from '../service/request';
|
|
import { useWorldStore } from '../stores';
|
|
|
|
const worldReq = {
|
|
/**
|
|
* @type {import('../types/api/world').GetWorld}
|
|
*/
|
|
getWorld(params) {
|
|
const worldStore = useWorldStore();
|
|
return request(`worlds/${params.worldId}`, {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
args.ref = worldStore.applyWorld(json);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{worldId: string}} params
|
|
* @returns {Promise<{json: any, ref: any, cache?: boolean, params}>}
|
|
*/
|
|
getCachedWorld(params) {
|
|
const worldStore = useWorldStore();
|
|
return new Promise((resolve, reject) => {
|
|
const ref = worldStore.cachedWorlds.get(params.worldId);
|
|
if (typeof ref === 'undefined') {
|
|
worldReq
|
|
.getWorld(params)
|
|
.catch(reject)
|
|
.then((args) => {
|
|
args.ref = worldStore.applyWorld(args.json);
|
|
resolve(args);
|
|
});
|
|
} else {
|
|
resolve({
|
|
cache: true,
|
|
json: ref,
|
|
params,
|
|
ref
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @type {import('../types/api/world').GetWorlds}
|
|
*/
|
|
getWorlds(params, option) {
|
|
const worldStore = useWorldStore();
|
|
let endpoint = 'worlds';
|
|
if (typeof option !== 'undefined') {
|
|
endpoint = `worlds/${option}`;
|
|
}
|
|
return request(endpoint, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params,
|
|
option
|
|
};
|
|
for (const json of args.json) {
|
|
worldStore.applyWorld(json);
|
|
}
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{worldId: string}} params
|
|
* @returns {Promise<{json: any, params}>}
|
|
*/
|
|
deleteWorld(params) {
|
|
return request(`worlds/${params.worldId}`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @type {import('../types/api/world').SaveWorld}
|
|
*/
|
|
saveWorld(params) {
|
|
const worldStore = useWorldStore();
|
|
return request(`worlds/${params.id}`, {
|
|
method: 'PUT',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
args.ref = worldStore.applyWorld(json);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{worldId: string}} params
|
|
* @returns {Promise<{json: any, params}>}
|
|
*/
|
|
publishWorld(params) {
|
|
const worldStore = useWorldStore();
|
|
return request(`worlds/${params.worldId}/publish`, {
|
|
method: 'PUT',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
args.ref = worldStore.applyWorld(json);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{worldId: string}} params
|
|
* @returns {Promise<{json: any, params}>}
|
|
*/
|
|
unpublishWorld(params) {
|
|
const worldStore = useWorldStore();
|
|
return request(`worlds/${params.worldId}/publish`, {
|
|
method: 'DELETE',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
args.ref = worldStore.applyWorld(json);
|
|
return args;
|
|
});
|
|
}
|
|
};
|
|
|
|
export default worldReq;
|