generated from alphane/template
33 lines
725 B
TypeScript
33 lines
725 B
TypeScript
import http from "@/api/http-client"
|
|
|
|
/** Keep in sync with api/src/models/user-preference.ts */
|
|
export enum PreferenceKeys {
|
|
FLASHCARDS_DAY_STREAK = "flashcards.day_streak",
|
|
}
|
|
|
|
export type PreferenceValueMap = {
|
|
[PreferenceKeys.FLASHCARDS_DAY_STREAK]: number
|
|
}
|
|
|
|
export type Preference = {
|
|
key: PreferenceKeys
|
|
value: unknown | null
|
|
}
|
|
|
|
export type PreferenceAsShow = Preference
|
|
|
|
export const preferencesApi = {
|
|
async upsert<K extends PreferenceKeys>(
|
|
userId: number,
|
|
key: K,
|
|
value: PreferenceValueMap[K] | null
|
|
): Promise<{ message: string }> {
|
|
const { data } = await http.patch(`/api/users/${userId}/preferences/${key}`, {
|
|
value,
|
|
})
|
|
return data
|
|
},
|
|
}
|
|
|
|
export default preferencesApi
|