diff --git a/ui/src/lib/ActionBar.svelte b/ui/src/lib/ActionBar.svelte index 146e6e8..651fe9b 100644 --- a/ui/src/lib/ActionBar.svelte +++ b/ui/src/lib/ActionBar.svelte @@ -29,7 +29,7 @@ entity.original_action_hash, entityType ); - userStatus = statusRecord ? decodeRecords([statusRecord])[0] : null; + userStatus = statusRecord ? decodeRecords([statusRecord])[0] : null; } } diff --git a/ui/src/lib/modals/OrganizationDetailsModal.svelte b/ui/src/lib/modals/OrganizationDetailsModal.svelte index f20559a..5bb3a9c 100644 --- a/ui/src/lib/modals/OrganizationDetailsModal.svelte +++ b/ui/src/lib/modals/OrganizationDetailsModal.svelte @@ -4,7 +4,7 @@ import ActionBar from '../ActionBar.svelte'; import type { UIOrganization, UIStatus } from '@/types/ui'; import administrationStore from '@/stores/administration.store.svelte'; - import { AdministrationEntity } from '@/types/holochain'; + import { AdministrationEntity, type StatusInDHT } from '@/types/holochain'; import { decodeRecords } from '@/utils'; const modalStore = getModalStore(); @@ -27,7 +27,7 @@ AdministrationEntity.Organizations ) .then((record) => { - organizationStatus = record ? decodeRecords([record])[0] : null; + organizationStatus = record ? decodeRecords([record])[0] : null; }); } }); diff --git a/ui/src/lib/modals/UserDetailsModal.svelte b/ui/src/lib/modals/UserDetailsModal.svelte index edacccb..9b1eaaf 100644 --- a/ui/src/lib/modals/UserDetailsModal.svelte +++ b/ui/src/lib/modals/UserDetailsModal.svelte @@ -5,7 +5,7 @@ import ActionBar from '../ActionBar.svelte'; import type { UIUser, UIStatus } from '@/types/ui'; import administrationStore from '@/stores/administration.store.svelte'; - import { AdministrationEntity } from '@/types/holochain'; + import { AdministrationEntity, type StatusInDHT } from '@/types/holochain'; import { decodeRecords } from '@/utils'; type Props = { @@ -32,7 +32,7 @@ user.original_action_hash!, AdministrationEntity.Users ); - userStatus = userStatusRecord ? decodeRecords([userStatusRecord])[0] : null; + userStatus = userStatusRecord ? decodeRecords([userStatusRecord])[0] : null; if (userStatus?.suspended_until) { suspensionDate = new Date(userStatus.suspended_until).toLocaleString(); diff --git a/ui/src/routes/(app)/organizations/[id]/+page.svelte b/ui/src/routes/(app)/organizations/[id]/+page.svelte index bb53863..5616b82 100644 --- a/ui/src/routes/(app)/organizations/[id]/+page.svelte +++ b/ui/src/routes/(app)/organizations/[id]/+page.svelte @@ -72,9 +72,8 @@ try { loading = true; - const statusLink = await administrationStore.getEntityStatusLink( - organization.original_action_hash, - AdministrationEntity.Organizations + const statusLink = await organizationsStore.getOrganizationStatusLink( + organization.original_action_hash ); if (!statusLink) { @@ -174,16 +173,12 @@ async function handleStatusHistoryModal() { try { - const statusLink = await administrationStore.getEntityStatusLink( - organization!.original_action_hash!, - AdministrationEntity.Organizations + const statusLink = await organizationsStore.getOrganizationStatusLink( + organization!.original_action_hash! ); if (!statusLink) return; - const statusHistory = await administrationStore.getAllRevisionsForStatus( - organization!, - statusLink.target - ); + const statusHistory = await administrationStore.getAllRevisionsForStatus(organization!); console.log('statusHistory:', statusHistory); diff --git a/ui/src/stores/administration.store.svelte.ts b/ui/src/stores/administration.store.svelte.ts index 3a55aae..44bbcca 100644 --- a/ui/src/stores/administration.store.svelte.ts +++ b/ui/src/stores/administration.store.svelte.ts @@ -51,7 +51,7 @@ class AdministrationStore { if (!status) continue; user.status = { - ...decodeRecords([status])[0], + ...decodeRecords([status])[0], original_action_hash: statusLink.target, previous_action_hash: status.signed_action.hashed.hash }; @@ -267,7 +267,7 @@ class AdministrationStore { const latestStatus = await AdministrationService.getLatestStatusRecord(statusLink.target); if (!latestStatus) return null; - const status = this.convertToUIStatus(decodeRecords([latestStatus])[0]); + const status = this.convertToUIStatus(decodeRecords([latestStatus])[0]); status.original_action_hash = statusLink.target; status.previous_action_hash = latestStatus.signed_action.hashed.hash; @@ -334,7 +334,7 @@ class AdministrationStore { ); const status = { - ...decodeRecords([record])[0], + ...decodeRecords([record])[0], original_action_hash: status_original_action_hash, previous_action_hash: record.signed_action.hashed.hash }; @@ -409,7 +409,7 @@ class AdministrationStore { ); const status = { - ...decodeRecords([record])[0], + ...decodeRecords([record])[0], original_action_hash: status_original_action_hash, previous_action_hash: record.signed_action.hashed.hash }; diff --git a/ui/src/stores/organizations.store.svelte.ts b/ui/src/stores/organizations.store.svelte.ts index b5c0f86..675c47c 100644 --- a/ui/src/stores/organizations.store.svelte.ts +++ b/ui/src/stores/organizations.store.svelte.ts @@ -13,8 +13,8 @@ class OrganizationsStore { async createOrganization(organization: OrganizationInDHT): Promise { const record = await OrganizationsService.createOrganization(organization); - const newOrganization: UIOrganization = { - ...decodeRecords([record])[0], + const newOrganization = { + ...decodeRecords([record])[0], original_action_hash: record.signed_action.hashed.hash, previous_action_hash: record.signed_action.hashed.hash, members: [], @@ -33,7 +33,7 @@ class OrganizationsStore { if (!record) throw new Error('Organization not found'); const organization: UIOrganization = { - ...decodeRecords([record])[0], + ...decodeRecords([record])[0], original_action_hash: record.signed_action.hashed.hash, previous_action_hash: record.signed_action.hashed.hash, members: [], @@ -233,10 +233,7 @@ class OrganizationsStore { } async getOrganizationStatusLink(original_action_hash: ActionHash) { - return await administrationStore.getEntityStatusLink( - original_action_hash, - AdministrationEntity.Organizations - ); + return await OrganizationsService.getOrganizationStatusLink(original_action_hash); } async updateOrganization( @@ -249,7 +246,7 @@ class OrganizationsStore { throw new Error('Organization not found'); } - const currentEntry = decodeRecords([currentOrg])[0] as OrganizationInDHT; + const currentEntry = decodeRecords([currentOrg])[0]; // Create the update input with all required fields const input = { diff --git a/ui/src/stores/users.store.svelte.ts b/ui/src/stores/users.store.svelte.ts index d615e2c..30e1854 100644 --- a/ui/src/stores/users.store.svelte.ts +++ b/ui/src/stores/users.store.svelte.ts @@ -12,8 +12,8 @@ class UsersStore { async createUser(user: UserInDHT): Promise { const record = await UsersService.createUser(user); - const newUser: UIUser = { - ...decodeRecords([record])[0], + const newUser = { + ...decodeRecords([record])[0], original_action_hash: record.signed_action.hashed.hash, previous_action_hash: record.signed_action.hashed.hash }; @@ -27,7 +27,7 @@ class UsersStore { if (!record) return null; return { - ...decodeRecords([record])[0], + ...decodeRecords([record])[0], original_action_hash: original_action_hash, previous_action_hash: record.signed_action.hashed.hash }; @@ -62,7 +62,7 @@ class UsersStore { if (!status) return null; this.currentUser = { - ...decodeRecords([userRecord])[0], + ...decodeRecords([userRecord])[0], status: status, original_action_hash: links[0].target, previous_action_hash: userRecord.signed_action.hashed.hash @@ -90,7 +90,7 @@ class UsersStore { ); const updatedUser: UIUser = { - ...decodeRecords([record])[0], + ...decodeRecords([record])[0], status: this.currentUser?.status, original_action_hash: userOriginalActionHash, previous_action_hash: record.signed_action.hashed.hash diff --git a/ui/src/utils/index.ts b/ui/src/utils/index.ts index 77a0f15..352430b 100644 --- a/ui/src/utils/index.ts +++ b/ui/src/utils/index.ts @@ -7,10 +7,10 @@ import { type ModalSettings, type ModalStore } from '@skeletonlabs/skeleton'; /** * Decodes the outputs from the records. * @param {Record[]} records - The records to decode. - * @returns {unknown[]} - The decoded outputs. + * @returns {T[]} - The decoded outputs. */ -export function decodeRecords(records: Record[]): any[] { - return records.map((r) => decode((r.entry as any).Present.entry)); +export function decodeRecords(records: Record[]): T[] { + return records.map((r) => decode((r.entry as any).Present.entry)) as T[]; } /**