import axios from 'axios'; import { url } from '@api/Api'; import { MapDiscussionContent, UploadRunContent } from '@customTypes/Content'; import { MapSummary, MapLeaderboard, MapDiscussions, MapDiscussion, } from '@customTypes/Map'; export const get_map_summary = async (map_id: string): Promise => { const response = await axios.get(url(`maps/${map_id}/summary`)); return response.data.data; }; export const get_map_leaderboard = async ( map_id: string, page: string ): Promise => { const response = await axios.get( url(`maps/${map_id}/leaderboards?page=${page}`) ); if (!response.data.success) { return undefined; } const data = response.data.data; // map the kind of leaderboard data.records = data.records.map((record: any) => { if (record.host && record.partner) { return { ...record, kind: 'multiplayer' }; } else { return { ...record, kind: 'singleplayer' }; } }); return data; }; export const get_map_discussions = async ( map_id: string ): Promise => { const response = await axios.get(url(`maps/${map_id}/discussions`)); if (!response.data.data.discussions) { return undefined; } return response.data.data; }; export const get_map_discussion = async ( map_id: string, discussion_id: number ): Promise => { const response = await axios.get( url(`maps/${map_id}/discussions/${discussion_id}`) ); if (!response.data.data.discussion) { return undefined; } return response.data.data; }; export const post_map_discussion = async ( token: string, map_id: string, content: MapDiscussionContent ): Promise => { const response = await axios.post( url(`maps/${map_id}/discussions`), { title: content.title, content: content.content, }, { headers: { Authorization: token, }, } ); return response.data.success; }; export const post_map_discussion_comment = async ( token: string, map_id: string, discussion_id: number, comment: string ): Promise => { const response = await axios.post( url(`maps/${map_id}/discussions/${discussion_id}`), { comment: comment, }, { headers: { Authorization: token, }, } ); return response.data.success; }; export const delete_map_discussion = async ( token: string, map_id: string, discussion_id: number ): Promise => { const response = await axios.delete( url(`maps/${map_id}/discussions/${discussion_id}`), { headers: { Authorization: token, }, } ); return response.data.success; }; export const post_record = async ( token: string, run: UploadRunContent, map_id: number ): Promise<[boolean, string]> => { if (run.partner_demo) { const response = await axios.postForm( url(`maps/${map_id}/record`), { host_demo: run.host_demo, partner_demo: run.partner_demo, }, { headers: { Authorization: token, }, } ); return [response.data.success, response.data.message]; } else { const response = await axios.postForm( url(`maps/${map_id}/record`), { host_demo: run.host_demo, }, { headers: { Authorization: token, }, } ); return [response.data.success, response.data.message]; } }; export const delete_map_record = async ( token: string, map_id: number, record_id: number ): Promise => { const response = await axios.delete( url(`maps/${map_id}/record/${record_id}`), { headers: { Authorization: token, }, } ); return response.data.success; };