Skip to content

Commit 31719fc

Browse files
authored
Merge branch 'main' into docs/CM-1333-akrites-cdp-auth-adr
2 parents 863bdb8 + 3a4b6c5 commit 31719fc

36 files changed

Lines changed: 962 additions & 279 deletions

File tree

backend/src/database/repositories/segmentRepository.ts

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,12 @@ class SegmentRepository extends RepositoryBase<
463463
if (adminSegments.length === 0) {
464464
return { count: 0, rows: [], limit: criteria.limit, offset: criteria.offset }
465465
}
466-
segmentsSearchQuery += `AND sp.id IN (:adminSegments)`
466+
segmentsSearchQuery += `AND EXISTS (
467+
SELECT 1 FROM segments sp
468+
WHERE sp."grandparentSlug" = f.slug
469+
AND sp."tenantId" = f."tenantId"
470+
AND sp.id IN (:adminSegments)
471+
)`
467472
replacements.adminSegments = adminSegments
468473
}
469474

@@ -474,23 +479,7 @@ class SegmentRepository extends RepositoryBase<
474479
SELECT
475480
f.id AS foundation_id,
476481
f.name AS foundation_name,
477-
f.status,
478-
f."createdAt",
479-
f."updatedAt",
480-
f."sourceId",
481-
f."sourceParentId",
482-
f.slug,
483-
p.name AS project_name,
484-
p.id AS project_id,
485-
p.status AS project_status,
486-
p.slug AS project_slug,
487-
COUNT(DISTINCT sp.id) AS subproject_count,
488-
JSONB_AGG(JSONB_BUILD_OBJECT(
489-
'id', sp.id,
490-
'name', sp.name,
491-
'status', sp.status,
492-
'slug', sp.slug
493-
)) AS subprojects
482+
COUNT(DISTINCT p.id)::int AS project_count
494483
FROM segments f
495484
JOIN segments p
496485
ON p."parentSlug" = f."slug"
@@ -503,22 +492,15 @@ class SegmentRepository extends RepositoryBase<
503492
WHERE f."parentSlug" IS NULL
504493
AND f."tenantId" = :tenantId
505494
${segmentsSearchQuery}
506-
GROUP BY f."id", p.id
495+
GROUP BY f.id
507496
)
508497
SELECT
509498
s.*,
510499
COUNT(*) OVER () AS "totalCount",
511-
JSONB_AGG(JSONB_BUILD_OBJECT(
512-
'id', f.project_id,
513-
'name', f.project_name,
514-
'status', f.project_status,
515-
'slug', f.project_slug,
516-
'subprojects', f.subprojects
517-
)) AS projects
500+
f.project_count AS "projectCount"
518501
FROM segments s
519502
JOIN foundations f ON s.id = f.foundation_id
520503
${searchQuery}
521-
GROUP BY s.id, f.foundation_name
522504
ORDER BY f.foundation_name
523505
${this.getPaginationString(criteria)};
524506
`,

frontend/nginx.kube.conf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,20 @@ http {
1818

1919
charset utf-8;
2020

21+
gzip on;
22+
gzip_comp_level 5;
23+
gzip_min_length 1024;
24+
gzip_proxied any;
25+
gzip_vary on;
26+
gzip_types
27+
text/plain
28+
text/css
29+
text/javascript
30+
application/javascript
31+
application/json
32+
application/xml
33+
image/svg+xml;
34+
2135
server {
2236
listen 8081 default_server;
2337
listen [::]:8081;

frontend/src/app.vue

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@
2323
<script>
2424
import { mapActions } from 'vuex';
2525
import AppResizePage from '@/modules/layout/pages/resize-page.vue';
26-
import { mapActions as piniaMapActions, storeToRefs } from 'pinia';
27-
import { useActivityStore } from '@/modules/activity/store/pinia';
28-
import { useActivityTypeStore } from '@/modules/activity/store/type';
26+
import { storeToRefs } from 'pinia';
2927
import { useAuthStore } from '@/modules/auth/store/auth.store';
3028
import useSessionTracking from '@/shared/modules/monitoring/useSessionTracking';
3129
import { useLfSegmentsStore } from '@/modules/lf/segments/store';
@@ -58,8 +56,10 @@ export default {
5856
tenant: {
5957
handler(tenant, oldTenant) {
6058
if (tenant?.id && tenant.id !== oldTenant?.id) {
61-
this.fetchActivityTypes();
62-
this.fetchActivityChannels();
59+
this.listProjectGroups({
60+
limit: 20,
61+
reset: true,
62+
});
6363
}
6464
},
6565
},
@@ -72,10 +72,6 @@ export default {
7272
if (queryParameters.get('state') === 'noconnect' && window.location.pathname.includes('/integration')) {
7373
return;
7474
}
75-
this.listProjectGroups({
76-
limit: null,
77-
reset: true,
78-
});
7975
if (['/auth/callback'].includes(window.location.pathname)) {
8076
return;
8177
}
@@ -91,12 +87,6 @@ export default {
9187
...mapActions({
9288
resize: 'layout/resize',
9389
}),
94-
...piniaMapActions(useActivityStore, {
95-
fetchActivityChannels: 'fetchActivityChannels',
96-
}),
97-
...piniaMapActions(useActivityTypeStore, {
98-
fetchActivityTypes: 'fetchActivityTypes',
99-
}),
10090
10191
handleResize() {
10292
this.resize({

frontend/src/modules/activity/components/activity-timeline.vue

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ const props = defineProps({
257257
});
258258
259259
const lsSegmentsStore = useLfSegmentsStore();
260-
const { projectGroups, selectedProjectGroup } = storeToRefs(lsSegmentsStore);
260+
const { selectedProjectGroup, selectedProjectGroupSubprojects } = storeToRefs(lsSegmentsStore);
261261
262262
const enabledPlatforms: IdentityConfig[] = Object.values(lfIdentities);
263263
@@ -274,16 +274,8 @@ const selectedSegment = ref(props.selectedSegment || null);
274274
275275
const isMemberEntity = computed(() => props.entityType === 'member');
276276
277-
const subprojects = computed(() => projectGroups.value.list.reduce((acc, projectGroup) => {
278-
projectGroup.projects.forEach((project) => {
279-
project.subprojects.forEach((subproject) => {
280-
acc[subproject.id] = {
281-
id: subproject.id,
282-
name: subproject.name,
283-
};
284-
});
285-
});
286-
277+
const subprojects = computed(() => selectedProjectGroupSubprojects.value.reduce((acc, sp) => {
278+
acc[sp.id] = { id: sp.id, name: sp.name };
287279
return acc;
288280
}, {}));
289281
@@ -292,7 +284,7 @@ const segments = computed(() => {
292284
return (
293285
getSegmentsFromProjectGroup(selectedProjectGroup.value)?.map(
294286
(s) => subprojects.value[s],
295-
) || []
287+
).filter((s) => !!s) || []
296288
);
297289
}
298290
return (

frontend/src/modules/admin/modules/projects/components/view/lf-project-groups-table.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@
2626
</div>
2727
</lf-table-cell>
2828
<lf-table-cell>
29-
<app-lf-project-column :projects="projectGroup.projects" />
29+
<app-lf-project-column
30+
:projects="projectGroup.projects || []"
31+
:project-count="projectGroup.projectCount"
32+
/>
3033
</lf-table-cell>
3134
<lf-table-cell class="pr-2 flex justify-end">
3235
<app-lf-project-groups-dropdown

frontend/src/modules/admin/modules/projects/pages/project-groups-list.page.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484

8585
<div class="mb-8 flex flex-wrap gap-2.5">
8686
<div class="bg-gray-200 text-gray-900 text-2xs px-2 h-6 flex items-center w-fit rounded-md">
87-
{{ pluralize('project', projectGroup.projects.length, true) }}
87+
{{ pluralize('project', projectGroup.projectCount ?? projectGroup.projects?.length ?? 0, true) }}
8888
</div>
8989
</div>
9090

frontend/src/modules/contributor/components/edit/identity/contributor-identity-add.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,10 @@ const isModalOpen = computed<boolean>({
166166
167167
const addIdentities = () => {
168168
sending.value = true;
169-
createContributorIdentities(props.contributor.id, form)
169+
createContributorIdentities(
170+
props.contributor.id,
171+
form.map(({ id, ...identity }) => identity),
172+
)
170173
.then(() => {
171174
ToastStore.success('Identities successfully added');
172175
isModalOpen.value = false;

frontend/src/modules/contributor/services/contributor.identities.api.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import authAxios from '@/shared/axios/auth-axios';
2-
import { ContributorIdentity, UpdateContributorIdentityPayload } from '@/modules/contributor/types/Contributor';
2+
import { CreateContributorIdentity, UpdateContributorIdentityPayload } from '@/modules/contributor/types/Contributor';
33
import { storeToRefs } from 'pinia';
44
import { useLfSegmentsStore } from '@/modules/lf/segments/store';
55

@@ -22,7 +22,7 @@ export class ContributorIdentitiesApiService {
2222
).then(({ data }) => Promise.resolve(data));
2323
}
2424

25-
static async createMultiple(memberId: string, identities: ContributorIdentity[]) {
25+
static async createMultiple(memberId: string, identities: CreateContributorIdentity[]) {
2626
return authAxios.put(
2727
`/member/${memberId}/identity`,
2828
{

frontend/src/modules/contributor/store/contributor.actions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useLfSegmentsStore } from '@/modules/lf/segments/store';
22
import { storeToRefs } from 'pinia';
33
import { ContributorApiService } from '@/modules/contributor/services/contributor.api.service';
44
import {
5-
Contributor, ContributorAffiliation, ContributorIdentity, UpdateContributorIdentityPayload,
5+
Contributor, ContributorAffiliation, ContributorIdentity, CreateContributorIdentity, UpdateContributorIdentityPayload,
66
} from '@/modules/contributor/types/Contributor';
77
import { ContributorIdentitiesApiService } from '@/modules/contributor/services/contributor.identities.api.service';
88
import { MergeActionsService } from '@/shared/modules/merge/services/merge-actions.service';
@@ -70,7 +70,7 @@ export default {
7070
return ContributorIdentitiesApiService.list(id, [selectedProjectGroup.value?.id as string])
7171
.then(this.setIdentities);
7272
},
73-
createContributorIdentities(memberId: string, identities: ContributorIdentity[]): Promise<ContributorIdentity[]> {
73+
createContributorIdentities(memberId: string, identities: CreateContributorIdentity[]): Promise<ContributorIdentity[]> {
7474
return ContributorIdentitiesApiService.createMultiple(memberId, identities)
7575
.then(this.setIdentities);
7676
},

frontend/src/modules/contributor/types/Contributor.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ export interface ContributorIdentity {
7373
duplicatedIdentities?: ContributorIdentity[];
7474
}
7575

76+
export type CreateContributorIdentity = Omit<
77+
ContributorIdentity,
78+
'id' | 'platforms' | 'url' | 'duplicatedIdentities'
79+
>;
80+
7681
export interface UpdateContributorIdentityPayload {
7782
value?: string;
7883
type?: string;

0 commit comments

Comments
 (0)