Skip to content

Commit

Permalink
fix(organization): delete board from organization collection (#1654)
Browse files Browse the repository at this point in the history
* fix(board): delete board from organization

* style(organizations): remove stats from cards and make page mobile friendly
  • Loading branch information
emilielr authored Sep 26, 2024
1 parent a869992 commit 1639969
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 43 deletions.
52 changes: 18 additions & 34 deletions tavla/app/(admin)/organizations/components/Organizations.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { TOrganization } from 'types/settings'
import EnturLogoBlue from 'assets/logos/Tavla-blue.svg'
import Image from 'next/image'
import { Link, Paragraph } from '@entur/typography'
import { Link } from '@entur/typography'
import NextLink from 'next/link'
import { Actions } from './Actions'
import { IllustratedInfo } from 'app/(admin)/components/IllustratedInfo'
Expand All @@ -22,50 +22,34 @@ function Organizations({
/>
)
return (
<div className="grid grid-cols-2 md:grid-cols-3 gap-6">
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-6">
{organizations.map((organization) => (
<div
className="w-full h-64 border rounded-md shadow-sm"
className=" border rounded-md shadow-sm"
key={organization.id}
>
<div className="h-full w-full grid grid-rows-2">
<div className="flex align-center justify-center relative">
<div className="flex flex-col">
<div className="h-36 flex align-center justify-center relative">
<Image
src={organization.logo ?? EnturLogoBlue}
alt="Logo til organisasjonen"
fill
objectFit="contain"
className="py-4 px-16"
className="py-12 px-8"
/>
</div>
<div className="bg-gray-100 p-4">
<div className="flex flex-row justify-between">
<Link
as={NextLink}
href={`/organizations/${organization.id}`}
className="!text-xl !font-bold"
>
{organization.name}
</Link>
<Actions
organization={organization}
userId={userId}
/>
</div>
<Paragraph className="py-2 !text-xs" margin="none">
Rolle:{' '}
{organization.owners?.includes(userId)
? 'Eier'
: 'Medlem'}
</Paragraph>
<Paragraph className="!text-xs" margin="none">
Antall tavler: {organization.boards?.length}
</Paragraph>
<Paragraph className="!text-xs" margin="none">
Antall medlemmer:{' '}
{(organization.editors?.length ?? 0) +
(organization.owners?.length ?? 0)}
</Paragraph>
<div className="bg-gray-100 p-4 flex flex-row justify-between gap-4">
<Link
as={NextLink}
href={`/organizations/${organization.id}`}
className="!text-xl !font-bold truncate"
>
{organization.name}
</Link>
<Actions
organization={organization}
userId={userId}
/>
</div>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion tavla/app/(admin)/organizations/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ async function OrganizationsPage() {
const organizations = await getOrganizationsForUser()

return (
<div className="container pb-20">
<div className="container pb-20 md:pb-40">
<Heading1>Organisasjoner</Heading1>
<div className="flex flex-col mx-auto md:flex-row justify-between mb-6 md:mb-0 md:gap-4">
<Paragraph className=" w-full md:w-3/4">
Expand Down
25 changes: 17 additions & 8 deletions tavla/app/(admin)/utils/firebase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
getBoardsForOrganization,
getOrganizationIfUserHasAccess,
} from '../actions'
import { getFormFeedbackForError } from '.'
import { getOrganizationForBoard } from '../edit/[id]/components/TileCard/actions'

initializeAdminApp()

Expand Down Expand Up @@ -98,19 +98,28 @@ export async function deleteBoard(bid: TBoardID) {
const user = await getUserFromSessionCookie()
const access = await hasBoardOwnerAccess(bid)

if (!user || !access)
return getFormFeedbackForError('auth/operation-not-allowed')
if (!user || !access) throw 'auth/operation-not-allowed'

return Promise.all([
firestore().collection('boards').doc(bid).delete(),
firestore()
const organization = await getOrganizationForBoard(bid)

await firestore().collection('boards').doc(bid).delete()

if (organization?.id) {
await firestore()
.collection('organizations')
.doc(organization.id)
.update({
boards: admin.firestore.FieldValue.arrayRemove(bid),
})
} else {
await firestore()
.collection('users')
.doc(user.uid)
.update({
owner: admin.firestore.FieldValue.arrayRemove(bid),
editor: admin.firestore.FieldValue.arrayRemove(bid),
}),
])
})
}
}

export async function deleteOrganization(oid: TOrganizationID) {
Expand Down

0 comments on commit 1639969

Please sign in to comment.