100 lines
2.2 KiB
TypeScript
100 lines
2.2 KiB
TypeScript
import axios from "../http-client";
|
|
import type {
|
|
ChannelId,
|
|
ChannelType,
|
|
Server,
|
|
ServerChannel,
|
|
ServerId,
|
|
ServerInvite,
|
|
} from "../types";
|
|
|
|
interface CreateServerRequest {
|
|
name: string;
|
|
iconId?: string;
|
|
}
|
|
|
|
interface CreateServerChannelRequest {
|
|
name: string;
|
|
type: ChannelType;
|
|
}
|
|
|
|
export async function list() {
|
|
const response = await axios.get("/servers");
|
|
|
|
return response.data as Server[];
|
|
}
|
|
|
|
export async function create(request: CreateServerRequest) {
|
|
const response = await axios.post("/servers", request);
|
|
|
|
return response.data as Server;
|
|
}
|
|
|
|
export async function get(serverId: ServerId) {
|
|
const response = await axios.get(`/servers/${serverId}`);
|
|
|
|
return response.data as Server;
|
|
}
|
|
|
|
export async function delet(serverId: ServerId) {
|
|
const response = await axios.delete(`/servers/${serverId}`);
|
|
|
|
return response.data as Server;
|
|
}
|
|
|
|
export async function listChannels(serverId: ServerId) {
|
|
const response = await axios.get(`/servers/${serverId}/channels`);
|
|
|
|
return response.data as ServerChannel[];
|
|
}
|
|
|
|
export async function createChannel(
|
|
serverId: ServerId,
|
|
request: CreateServerChannelRequest,
|
|
) {
|
|
const response = await axios.post(`/servers/${serverId}/channels`, request);
|
|
|
|
return response.data as ServerChannel;
|
|
}
|
|
|
|
export async function getChannel(serverId: ServerId, channelId: ChannelId) {
|
|
const response = await axios.get(
|
|
`/servers/${serverId}/channels/${channelId}`,
|
|
);
|
|
|
|
return response.data as ServerChannel;
|
|
}
|
|
|
|
export async function deleteChannel(serverId: ServerId, channelId: ChannelId) {
|
|
const response = await axios.delete(
|
|
`/servers/${serverId}/channels/${channelId}`,
|
|
);
|
|
|
|
return response.data as ServerChannel;
|
|
}
|
|
|
|
export async function createInvite(serverId: ServerId) {
|
|
const response = await axios.post(`/servers/${serverId}/invites`);
|
|
|
|
return response.data as ServerInvite;
|
|
}
|
|
|
|
export async function getInvite(inviteCode: string) {
|
|
const response = await axios.get(`/invites/${inviteCode}`);
|
|
|
|
return response.data as Server;
|
|
}
|
|
|
|
export default {
|
|
create,
|
|
list,
|
|
listChannels,
|
|
get,
|
|
delet,
|
|
createChannel,
|
|
getChannel,
|
|
deleteChannel,
|
|
createInvite,
|
|
getInvite,
|
|
};
|