From 43de7bc9b51e9dbeb5c6daa51233589087133014 Mon Sep 17 00:00:00 2001 From: Frank Agerholm Date: Sun, 25 Jan 2026 19:55:55 +0100 Subject: [PATCH] frontend: useServers(), useOwners() --- frontend/app/composables/useOwners.ts | 33 +++++++++++++++++++++++ frontend/app/composables/useServers.ts | 33 +++++++++++++++++++++++ frontend/app/pages/owners/index.vue | 18 +------------ frontend/app/pages/servers/index.vue | 33 ++--------------------- frontend/app/pages/workentries/search.vue | 14 +--------- 5 files changed, 70 insertions(+), 61 deletions(-) create mode 100644 frontend/app/composables/useOwners.ts create mode 100644 frontend/app/composables/useServers.ts diff --git a/frontend/app/composables/useOwners.ts b/frontend/app/composables/useOwners.ts new file mode 100644 index 0000000..6af05a0 --- /dev/null +++ b/frontend/app/composables/useOwners.ts @@ -0,0 +1,33 @@ +import { ref } from "vue" +import { isUnauthorized } from "~/utils/auth" + +export function useOwners() { + const owners = ref([]) + const loading = ref(false) + const error = ref("") + + const { apiFetch } = useApi() + + async function loadOwners() { + loading.value = true + error.value = "" + + const result = await apiFetch("/owners") + + if (isUnauthorized(result)) { + loading.value = false + return result + } + + owners.value = result + loading.value = false + return result + } + + return { + owners, + loading, + error, + loadOwners + } +} diff --git a/frontend/app/composables/useServers.ts b/frontend/app/composables/useServers.ts new file mode 100644 index 0000000..63408e9 --- /dev/null +++ b/frontend/app/composables/useServers.ts @@ -0,0 +1,33 @@ +import { ref } from "vue" +import { isUnauthorized } from "~/utils/auth" + +export function useServers() { + const servers = ref([]) + const loading = ref(false) + const error = ref("") + + const { apiFetch } = useApi() + + async function loadServers() { + loading.value = true + error.value = "" + + const result = await apiFetch("/servers") + + if (isUnauthorized(result)) { + loading.value = false + return result + } + + servers.value = result + loading.value = false + return result + } + + return { + servers, + loading, + error, + loadServers + } +} diff --git a/frontend/app/pages/owners/index.vue b/frontend/app/pages/owners/index.vue index d317319..d03b97c 100644 --- a/frontend/app/pages/owners/index.vue +++ b/frontend/app/pages/owners/index.vue @@ -9,28 +9,12 @@ import { ref, onMounted } from "vue" const { loadToken } = useAuth() const { apiFetch } = useApi() +const { owners, loadOwners } = useOwners() -const owners = ref([]) const newOwnerName = ref("") const loading = ref(false) const error = ref("") -async function loadOwners() { - loading.value = true - try { - const result = await apiFetch("/owners") - if (isUnauthorized(result)) { - return result - } - owners.value = result - return result - } catch (e: any) { - error.value = e.message - } finally { - loading.value = false - } -} - async function createOwner() { if (!newOwnerName.value.trim()) return diff --git a/frontend/app/pages/servers/index.vue b/frontend/app/pages/servers/index.vue index 9663444..f4c51be 100644 --- a/frontend/app/pages/servers/index.vue +++ b/frontend/app/pages/servers/index.vue @@ -8,8 +8,9 @@ import { ref, onMounted } from "vue" import { isUnauthorized } from "~/utils/auth" const { apiFetch } = useApi() +const { servers, loadServers } = useServers() +const { owners, loadOwners } = useOwners() -const servers = ref([]) const newServer = ref({ hostname: "", description: "", @@ -64,36 +65,6 @@ async function saveEdit(serverId: number) { } } - -const owners = ref([]) - -async function loadOwners() { - try { - const result = await apiFetch("/owners") - if (isUnauthorized(result)) { - return result - } - owners.value = result - } catch (e: any) { - error.value = e.message - } -} - -async function loadServers() { - loading.value = true - try { - const result = await apiFetch("/servers") - if (isUnauthorized(result)) { - return result - } - servers.value = result - } catch (e: any) { - error.value = e.message - } finally { - loading.value = false - } -} - async function createServer() { if (!newServer.value.hostname.trim()) return diff --git a/frontend/app/pages/workentries/search.vue b/frontend/app/pages/workentries/search.vue index ae05c6c..059742b 100644 --- a/frontend/app/pages/workentries/search.vue +++ b/frontend/app/pages/workentries/search.vue @@ -8,8 +8,8 @@ import { ref, onMounted } from "vue" import { isUnauthorized } from "~/utils/auth" const { apiFetch } = useApi() +const { servers, loadServers } = useServers() -const servers = ref([]) const selectedServer = ref(null) const query = ref("") const results = ref([]) @@ -21,18 +21,6 @@ function toggleRow(id: number) { expandedRow.value = expandedRow.value === id ? null : id } -async function loadServers() { - try { - const result = await apiFetch("/servers") - if (isUnauthorized(result)) { - return result - } - servers.value = result - } catch (e: any) { - error.value = e.message - } -} - async function search() { if (!selectedServer.value && !query.value) { results.value = []