style: ensure all api requests that return an array to return an empty array instead of undefined

This commit is contained in:
Twig 2025-07-16 10:44:23 +02:00
parent ce5d65e62d
commit 56ccd61107
No known key found for this signature in database

View file

@ -1,24 +1,32 @@
import type { ChannelResponse, GuildMemberResponse, GuildResponse, MessageResponse, StatsResponse, UserResponse } from "~/types/interfaces"; import type { ChannelResponse, GuildMemberResponse, GuildResponse, MessageResponse, StatsResponse, UserResponse } from "~/types/interfaces";
function ensureIsArray(list: any) {
if (Array.isArray(list)) {
return list
} else {
return []
}
}
export const useApi = () => { export const useApi = () => {
async function fetchGuilds(): Promise<GuildResponse[] | undefined> { async function fetchGuilds(): Promise<GuildResponse[]> {
return await fetchWithApi(`/guilds`); return ensureIsArray(await fetchWithApi(`/guilds`));
} }
async function fetchGuild(guildId: string): Promise<GuildResponse | undefined> { async function fetchGuild(guildId: string): Promise<GuildResponse | undefined> {
return await fetchWithApi(`/guilds/${guildId}`); return await fetchWithApi(`/guilds/${guildId}`);
} }
async function fetchChannels(guildId: string): Promise<ChannelResponse[] | undefined> { async function fetchChannels(guildId: string): Promise<ChannelResponse[]> {
return await fetchWithApi(`/guilds/${guildId}/channels`); return ensureIsArray(await fetchWithApi(`/guilds/${guildId}/channels`));
} }
async function fetchChannel(channelId: string): Promise<ChannelResponse | undefined> { async function fetchChannel(channelId: string): Promise<ChannelResponse | undefined> {
return await fetchWithApi(`/channels/${channelId}`) return await fetchWithApi(`/channels/${channelId}`)
} }
async function fetchMembers(guildId: string): Promise<GuildMemberResponse[] | undefined> { async function fetchMembers(guildId: string): Promise<GuildMemberResponse[]> {
return await fetchWithApi(`/guilds/${guildId}/members`); return ensureIsArray(await fetchWithApi(`/guilds/${guildId}/members`));
} }
async function fetchMember(guildId: string, memberId: string): Promise<GuildMemberResponse | undefined> { async function fetchMember(guildId: string, memberId: string): Promise<GuildMemberResponse | undefined> {
@ -34,12 +42,7 @@ export const useApi = () => {
} }
async function fetchFriends(): Promise<UserResponse[]> { async function fetchFriends(): Promise<UserResponse[]> {
const response = await fetchWithApi('/me/friends') return ensureIsArray(await fetchWithApi('/me/friends'));
if (Array.isArray(response)) {
return response
} else {
return []
}
} }
async function addFriend(username: string): Promise<void> { async function addFriend(username: string): Promise<void> {