diff --git a/cannamanage-frontend/src/app/(dashboard-layout)/assemblies/[id]/page.tsx b/cannamanage-frontend/src/app/(dashboard-layout)/assemblies/[id]/page.tsx
index 59da830..2073277 100644
--- a/cannamanage-frontend/src/app/(dashboard-layout)/assemblies/[id]/page.tsx
+++ b/cannamanage-frontend/src/app/(dashboard-layout)/assemblies/[id]/page.tsx
@@ -19,14 +19,9 @@ import {
Square,
Users,
Vote,
- XCircle,
} from "lucide-react"
-import type {
- AssemblyDetail,
- AssemblyStatus,
- VoteResult,
-} from "@/services/assemblies"
+import type { AssemblyDetail, AssemblyStatus } from "@/services/assemblies"
import { Badge } from "@/components/ui/badge"
import { Button } from "@/components/ui/button"
@@ -56,6 +51,7 @@ export default function AssemblyDetailPage() {
useEffect(() => {
if (id) loadDetail()
+ // eslint-disable-next-line react-hooks/exhaustive-deps
}, [id])
async function loadDetail() {
diff --git a/cannamanage-frontend/src/app/(dashboard-layout)/assemblies/page.tsx b/cannamanage-frontend/src/app/(dashboard-layout)/assemblies/page.tsx
index db9b797..3cbf354 100644
--- a/cannamanage-frontend/src/app/(dashboard-layout)/assemblies/page.tsx
+++ b/cannamanage-frontend/src/app/(dashboard-layout)/assemblies/page.tsx
@@ -116,7 +116,11 @@ export default function AssembliesPage() {
...prev,
agendaItems: [
...prev.agendaItems,
- { title: "", description: "", itemType: "INFORMATION" as AgendaItemType },
+ {
+ title: "",
+ description: "",
+ itemType: "INFORMATION" as AgendaItemType,
+ },
],
}))
}
@@ -132,7 +136,7 @@ export default function AssembliesPage() {
setFormData((prev) => ({
...prev,
agendaItems: prev.agendaItems.map((item, i) =>
- i === index ? { ...item, [field]: value } : item,
+ i === index ? { ...item, [field]: value } : item
),
}))
}
@@ -338,7 +342,7 @@ export default function AssembliesPage() {
year: "numeric",
hour: "2-digit",
minute: "2-digit",
- },
+ }
)}
{assembly.location && ` • ${assembly.location}`}
diff --git a/cannamanage-frontend/src/services/assemblies.ts b/cannamanage-frontend/src/services/assemblies.ts
index a350884..38535d7 100644
--- a/cannamanage-frontend/src/services/assemblies.ts
+++ b/cannamanage-frontend/src/services/assemblies.ts
@@ -1,4 +1,4 @@
-import { apiClient } from "@/lib/api-client"
+import { apiClient, apiDownload } from "@/lib/api-client"
export type AssemblyType = "ORDINARY" | "EXTRAORDINARY"
export type AssemblyStatus =
@@ -96,48 +96,40 @@ export interface CreateVoteRequest {
// === API Functions ===
export async function getAssemblies(): Promise {
- const res = await apiClient.get("/api/v1/assemblies")
- return res.data
+ return apiClient("/assemblies")
}
export async function getAssemblyDetail(id: string): Promise {
- const res = await apiClient.get(`/api/v1/assemblies/${id}`)
- return res.data
+ return apiClient(`/assemblies/${id}`)
}
export async function createAssembly(
data: CreateAssemblyRequest
): Promise {
- const res = await apiClient.post("/api/v1/assemblies", data)
- return res.data
+ return apiClient("/assemblies", { method: "POST", body: data })
}
export async function updateAssembly(
id: string,
data: Partial
): Promise {
- const res = await apiClient.put(`/api/v1/assemblies/${id}`, data)
- return res.data
+ return apiClient(`/assemblies/${id}`, { method: "PUT", body: data })
}
export async function sendInvitations(id: string): Promise {
- const res = await apiClient.post(`/api/v1/assemblies/${id}/invite`)
- return res.data
+ return apiClient(`/assemblies/${id}/invite`, { method: "POST" })
}
export async function cancelAssembly(id: string): Promise {
- const res = await apiClient.post(`/api/v1/assemblies/${id}/cancel`)
- return res.data
+ return apiClient(`/assemblies/${id}/cancel`, { method: "POST" })
}
export async function startAssembly(id: string): Promise {
- const res = await apiClient.post(`/api/v1/assemblies/${id}/start`)
- return res.data
+ return apiClient(`/assemblies/${id}/start`, { method: "POST" })
}
export async function completeAssembly(id: string): Promise {
- const res = await apiClient.post(`/api/v1/assemblies/${id}/complete`)
- return res.data
+ return apiClient(`/assemblies/${id}/complete`, { method: "POST" })
}
export async function checkInAttendee(
@@ -145,27 +137,24 @@ export async function checkInAttendee(
memberId: string,
proxyForMemberId?: string
): Promise {
- const res = await apiClient.post(
- `/api/v1/assemblies/${assemblyId}/attendees`,
- { memberId, proxyForMemberId }
- )
- return res.data
+ return apiClient(`/assemblies/${assemblyId}/attendees`, {
+ method: "POST",
+ body: { memberId, proxyForMemberId },
+ })
}
export async function getAttendees(assemblyId: string): Promise {
- const res = await apiClient.get(`/api/v1/assemblies/${assemblyId}/attendees`)
- return res.data
+ return apiClient(`/assemblies/${assemblyId}/attendees`)
}
export async function createVote(
assemblyId: string,
data: CreateVoteRequest
): Promise {
- const res = await apiClient.post(
- `/api/v1/assemblies/${assemblyId}/votes`,
- data
- )
- return res.data
+ return apiClient(`/assemblies/${assemblyId}/votes`, {
+ method: "POST",
+ body: data,
+ })
}
export async function castVote(
@@ -173,34 +162,30 @@ export async function castVote(
memberId: string,
decision: VoteDecision
): Promise {
- const res = await apiClient.post(`/api/v1/assemblies/votes/${voteId}/cast`, {
- memberId,
- decision,
+ return apiClient(`/assemblies/votes/${voteId}/cast`, {
+ method: "POST",
+ body: { memberId, decision },
})
- return res.data
}
export async function closeVote(voteId: string): Promise {
- const res = await apiClient.post(`/api/v1/assemblies/votes/${voteId}/close`)
- return res.data
+ return apiClient(`/assemblies/votes/${voteId}/close`, {
+ method: "POST",
+ })
}
export async function downloadProtocol(assemblyId: string): Promise {
- const res = await apiClient.get(`/api/v1/assemblies/${assemblyId}/protocol`, {
- responseType: "blob",
- })
- return res.data
+ const { blob } = await apiDownload(`/assemblies/${assemblyId}/protocol`)
+ return blob
}
// Portal
export async function getPortalAssemblies(): Promise {
- const res = await apiClient.get("/api/v1/portal/assemblies")
- return res.data
+ return apiClient("/portal/assemblies")
}
export async function getPortalAssemblyDetail(
id: string
): Promise {
- const res = await apiClient.get(`/api/v1/portal/assemblies/${id}`)
- return res.data
+ return apiClient(`/portal/assemblies/${id}`)
}