1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-08-27 15:26:25 -07:00
gochan/frontend/ts/api/requests.ts
2023-06-22 07:46:04 -07:00

75 lines
No EOL
1.7 KiB
TypeScript

/* eslint no-unused-vars: ["warn", {"args":"none"}] */
import $ from "jquery";
import { currentBoard, currentThread } from "../postinfo";
interface BoardsList {
boards: any[];
currentBoard: string;
}
const nullBoardsList: BoardsList = {
boards: [],
currentBoard: ""
};
export async function getBoardList() {
try {
const data = await $.ajax({
url: webroot + "boards.json",
cache: false,
dataType: "json",
error: function(_err, _status, statusText) {
console.error("Error getting board list: " + statusText);
return nullBoardsList;
},
});
return { boards: data.boards, currentBoard: currentBoard() };
} catch(e) {
return nullBoardsList;
}
}
export async function getCatalog(board = "") {
const useBoard = (board !== "")?board:currentBoard();
const data = await $.ajax({
url: webroot + useBoard + "/catalog.json",
cache: false,
dataType: "json",
error: function (err, status, statusText) {
console.error(`Error getting catalog for /${board}/: ${statusText}`);
}
});
if(data.length === 0)
return [];
if(data[0] === null)
data.shift();
return data;
}
export async function getThread(board = "", thread = 0) {
const threadInfo = currentThread();
if(board !== "")
threadInfo.board = board;
if(thread > 0)
threadInfo.id = thread;
if(threadInfo.board === "") {
return Promise.reject("not in a board");
}
if(threadInfo.id < 1) {
return Promise.reject("not in a thread");
}
const data = await $.ajax({
url: `${webroot}${threadInfo.board}/res/${threadInfo.id}.json`,
cache: false,
dataType: "json",
error: function (err, status, statusText) {
console.error(`Error getting catalog for /${board}/: ${statusText}`);
}
});
return data;
}