Skip to content

Commit

Permalink
fix: filter approved software and projects on organisation page
Browse files Browse the repository at this point in the history
  • Loading branch information
dmijatovic committed Jun 21, 2022
1 parent 4418a5e commit 948973c
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 2 deletions.
38 changes: 38 additions & 0 deletions frontend/auth/permissions/addMaintainerToOrganisation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// SPDX-FileCopyrightText: 2022 Dusan Mijatovic (dv4all)
// SPDX-FileCopyrightText: 2022 dv4all
//
// SPDX-License-Identifier: Apache-2.0

import {createJsonHeaders, extractReturnMessage} from '~/utils/fetchHelpers'
import logger from '~/utils/logger'

export async function addMaintainerToOrganisation({organisation, account, token, frontend = false}:
{ organisation: string, account: string, token: string, frontend: boolean }) {
try {
const query ='maintainer_for_organisation'
let url = `${process.env.POSTGREST_URL}/${query}`
if (frontend === true) {
url = `/api/v1/${query}`
}
const resp = await fetch(url, {
method: 'POST',
headers: {
...createJsonHeaders(token),
'Prefer': 'resolution=merge-duplicates'
},
body: JSON.stringify({
maintainer: account,
organisation,
})
})
// return info
const info = await extractReturnMessage(resp)
return info
} catch (e: any) {
logger(`addMaintainerToOrganisation failed: ${e?.message}`, 'error')
return {
status: 500,
message: e?.message
}
}
}
16 changes: 15 additions & 1 deletion frontend/components/organisation/units/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {sortOnStrProp} from '../../../utils/sortFn'
import logger from '../../../utils/logger'
import UnitsList from './ResearchUnitList'
import ResearchUnitModal from './ResearchUnitModal'
import {addMaintainerToOrganisation} from '~/auth/permissions/addMaintainerToOrganisation'

type EditOrganisationModal = {
open: boolean,
Expand Down Expand Up @@ -59,7 +60,7 @@ export default function ResearchUnits({organisation, session, isMaintainer}:
const newOrganisation:EditOrganisation = newOrganisationProps({
name:'',
position: 1,
primary_maintainer: session?.user?.account ?? null,
primary_maintainer: null,
parent: organisation.id
})
// show modal
Expand Down Expand Up @@ -127,6 +128,19 @@ export default function ResearchUnits({organisation, session, isMaintainer}:
id: resp.message
})
addUnitToCollection(newUnit)
if (newUnit.id && session.user?.account) {
// add maintainer to org
const resp = await addMaintainerToOrganisation({
organisation: newUnit.id,
account: session.user?.account,
token: session.token,
frontend: true
})
debugger
if (resp.status !== 200) {
showErrorMessage(`Failed to assign you as maintainer. ${resp.message}`)
}
}
} else {
showErrorMessage(resp.message)
}
Expand Down
2 changes: 1 addition & 1 deletion frontend/pages/organisations/[...slug].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ export default function OrganisationPage({organisation,slug}:OrganisationPagePro
{...organisation}
/>
</div>
<div className="min-h-[55rem]">
<div className="flex flex-col min-h-[55rem]">
{renderStepComponent()}
</div>
</section>
Expand Down
8 changes: 8 additions & 0 deletions frontend/utils/getOrganisations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,10 @@ export async function getSoftwareForOrganisation({organisation, searchFor, page,
try {
// baseUrl
let url = `/api/v1/rpc/software_by_organisation?organisation=eq.${organisation}&order=is_featured.desc,is_published.desc,mention_cnt.desc.nullslast,brand_name.asc`
// filter for public on approved only
if (!token) {
url+='&status=eq.approved'
}
// search
if (searchFor) {
url+=`&or=(brand_name.ilike.*${searchFor}*, short_statement.ilike.*${searchFor}*))`
Expand Down Expand Up @@ -219,6 +223,10 @@ export async function getProjectsForOrganisation({organisation, searchFor, page,
try {
// baseUrl
let url = `/api/v1/rpc/projects_by_organisation?organisation=eq.${organisation}&order=is_featured.desc,is_published.desc,title.asc`
// filter for public on approved only
if (!token) {
url += '&status=eq.approved'
}
// search
if (searchFor) {
url += `&or=(title.ilike.*${searchFor}*,subtitle.ilike.*${searchFor}*))`
Expand Down

0 comments on commit 948973c

Please sign in to comment.