feeds-fun
Version:
Frontend for the Feeds Fun — web-based news reader
76 lines (60 loc) • 1.69 kB
text/typescript
import {ref, computed} from "vue";
import {defineStore} from "pinia";
import {computedAsync} from "@vueuse/core";
import {useGlobalState} from "@/stores/globalState";
import * as e from "@/logic/enums";
import * as api from "@/logic/api";
export const useGlobalSettingsStore = defineStore("globalSettings", () => {
const globalState = useGlobalState();
// General
const mainPanelMode = ref(e.MainPanelMode.Entries);
const dataVersion = ref(0);
// Entries
const lastEntriesPeriod = ref(e.LastEntriesPeriod.Day3);
const entriesOrder = ref(e.EntriesOrder.Score);
const showRead = ref(true);
const entriesOrderProperties = computed(() => {
return e.EntriesOrderProperties.get(entriesOrder.value);
});
// Feeds
const showFeedsDescriptions = ref(true);
const feedsOrder = ref(e.FeedsOrder.Title);
const failedFeedsFirst = ref(false);
// Rules
const rulesOrder = ref(e.RulesOrder.Tags);
function updateDataVersion() {
dataVersion.value++;
}
// backend side settings
const userSettings = computedAsync(async () => {
if (!globalState.isLoggedIn) {
return null;
}
// force refresh
dataVersion.value;
return await api.getUserSettings();
}, null);
const info = computedAsync(async () => {
if (!globalState.isLoggedIn) {
return null;
}
// force refresh
dataVersion.value;
return await api.getInfo();
}, null);
return {
mainPanelMode,
lastEntriesPeriod,
entriesOrder,
showRead,
entriesOrderProperties,
dataVersion,
updateDataVersion,
showFeedsDescriptions,
userSettings,
info,
feedsOrder,
failedFeedsFirst,
rulesOrder
};
});