Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove meeting user_ids #2210

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions client/src/app/domain/models/meetings/meeting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,6 @@ export class Meeting extends BaseModel<Meeting> {

// Other relations
public present_user_ids!: Id[]; // (user/is_present_in_meeting_ids)[];
public user_ids!: Id[]; // Calculated: All ids all users assigned to groups.
public reference_projector_id!: Id; // projector/used_as_reference_projector_meeting_id;
public default_projector_$_ids!: string[]; // projector/used_as_default_$_in_meeting_id;

Expand Down Expand Up @@ -451,7 +450,6 @@ export class Meeting extends BaseModel<Meeting> {
`default_meeting_for_committee_id`,
`organization_tag_ids`,
`present_user_ids`,
`user_ids`,
`reference_projector_id`,
`list_of_speakers_countdown_id`,
`poll_countdown_id`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ export class MeetingRepositoryService extends BaseRepository<ViewMeeting, Meetin
`is_active_in_organization_id`,
`is_archived_organization_id`,
`template_for_organization_id`,
`user_ids`,
`description`,
`location`,
`organization_tag_ids`,
Expand Down Expand Up @@ -219,6 +218,7 @@ export class MeetingRepositoryService extends BaseRepository<ViewMeeting, Meetin
protected override createViewModel(model: Meeting): ViewMeeting {
const viewModel = super.createViewModel(model);
viewModel.getProjectorTitle = (projection: Projection) => this.getProjectorTitle(viewModel, projection);
viewModel.getUserIds = () => viewModel.groups.map(g => g.user_ids).flat();
return viewModel;
}

Expand Down
10 changes: 0 additions & 10 deletions client/src/app/infrastructure/definitions/relations/relations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -683,16 +683,6 @@ export const RELATIONS: Relation[] = [
generic: false,
structured: true
},
// meeting/user_ids -> user
{
ownViewModels: [ViewMeeting],
foreignViewModel: ViewUser,
ownField: `users`,
ownIdField: `user_ids`,
many: true,
generic: false,
structured: false
},
// user/meeting_ids -> meeting
{
ownViewModels: [ViewUser],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,23 @@ export const getParticipantVoteInfoSubscriptionConfig: SubscriptionConfigGenerat
ids: [id],
follow: [
{
idField: `user_ids`,
fieldset: [
`default_vote_weight`,
`is_physical_person`,
`is_active`,
`meeting_ids`,
{ templateField: `vote_delegated_$_to_id` },
{ templateField: `vote_delegations_$_from_ids` },
{ templateField: `vote_weight_$` },
{ templateField: `group_$_ids` },
`is_present_in_meeting_ids`
idField: `group_ids`,
fieldset: [],
follow: [
{
idField: `user_ids`,
fieldset: [
`default_vote_weight`,
`is_physical_person`,
`is_active`,
`meeting_ids`,
{ templateField: `vote_delegated_$_to_id` },
{ templateField: `vote_delegations_$_from_ids` },
{ templateField: `vote_weight_$` },
{ templateField: `group_$_ids` },
`is_present_in_meeting_ids`
]
}
]
}
]
Expand All @@ -40,7 +46,13 @@ export const getParticipantIsPresentSubscriptionConfig: SubscriptionConfigGenera
viewModelCtor: ViewMeeting,
fieldset: [],
ids: [id],
follow: [{ idField: `user_ids`, additionalFields: [`is_present_in_meeting_ids`] }]
follow: [
{
idField: `group_ids`,
fieldset: [],
follow: [{ idField: `user_ids`, additionalFields: [`is_present_in_meeting_ids`] }]
}
]
},
subscriptionName: PARTICIPANT_IS_PRESENT_LIST_SUBSCRIPTION
});
Expand All @@ -49,7 +61,13 @@ export const getParticipantListSubscriptionConfig: SubscriptionConfigGenerator =
modelRequest: {
viewModelCtor: ViewMeeting,
ids: [id],
follow: [{ idField: `user_ids`, fieldset: `participantList` }]
follow: [
{
idField: `group_ids`,
fieldset: [],
follow: [{ idField: `user_ids`, fieldset: `participantList` }]
}
]
},
subscriptionName: PARTICIPANT_LIST_SUBSCRIPTION
});
Expand All @@ -58,7 +76,13 @@ export const getParticipantMinimalSubscriptionConfig: SubscriptionConfigGenerato
modelRequest: {
viewModelCtor: ViewMeeting,
ids: [id],
follow: [{ idField: `user_ids`, fieldset: `participantListMinimal` }]
follow: [
{
idField: `group_ids`,
fieldset: [],
follow: [{ idField: `user_ids`, fieldset: `participantListMinimal` }]
}
]
},
subscriptionName: PARTICIPANT_LIST_SUBSCRIPTION_MINIMAL
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import { ViewUser } from 'src/app/site/pages/meetings/view-models/view-user';
import { UserService } from 'src/app/site/services/user.service';
import { UserControllerService } from 'src/app/site/services/user-controller.service';

import { GroupControllerService } from '../../../modules';
import { ParticipantCommonServiceModule } from '../participant-common-service.module';

export const MEETING_RELATED_FORM_CONTROLS = [
Expand All @@ -48,6 +49,7 @@ export class ParticipantControllerService extends BaseMeetingControllerService<V
controllerServiceCollector: MeetingControllerServiceCollectorService,
protected override repo: UserRepositoryService,
public meetingController: MeetingControllerService,
public groupController: GroupControllerService,
private userController: UserControllerService,
private userDeleteDialog: UserDeleteDialogService,
private presenter: GetUserScopePresenterService,
Expand All @@ -66,13 +68,21 @@ export class ParticipantControllerService extends BaseMeetingControllerService<V
meetingUserIds = meeting?.user_ids ?? [];
const meetingUsers =
meeting && meeting?.user_ids
? repo.getViewModelList().filter(user => meeting?.user_ids.includes(user.id))
? repo.getViewModelList().filter(user => meetingUserIds.includes(user.id))
: [];
this._participantListSubject.next(meetingUsers);
});
}
});

this.groupController.getViewModelListObservable().subscribe(_ => {
meetingUserIds = this.activeMeeting?.user_ids ?? [];
const meetingUsers = meetingUserIds.length
? repo.getViewModelList().filter(user => meetingUserIds.includes(user.id))
: [];
this._participantListSubject.next(meetingUsers);
});

repo.getViewModelListObservable().subscribe(users => {
const meetingUsers = users.filter(
user => user.group_ids(this.activeMeetingId).length && meetingUserIds.includes(user.id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ export function getActiveMeetingSubscriptionConfig(id: Id, settingsKeys: string[
`is_active_in_organization_id`,
`is_archived_organization_id`,
`template_for_organization_id`,
`user_ids`,
`description`,
`location`,
`organization_tag_ids`,
Expand All @@ -44,7 +43,8 @@ export function getActiveMeetingSubscriptionConfig(id: Id, settingsKeys: string[
`default_group_for_meeting_id`,
`name`,
`permissions`,
`weight`
`weight`,
`user_ids`
]
},
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { unix } from 'moment';
import { Id } from 'src/app/domain/definitions/key-types';
import { HasProjectorTitle } from 'src/app/domain/interfaces/has-projector-title';
import { Meeting } from 'src/app/domain/models/meetings/meeting';

Expand Down Expand Up @@ -78,6 +79,10 @@ export class ViewMeeting extends BaseViewModel<Meeting> {
return this.is_template || !!this.template_for_organization_id;
}

public get user_ids(): Id[] {
return this.getUserIds();
}

public get relatedTime(): RelatedTime {
if ((this.start_time ?? this.end_time) === undefined) {
return RelatedTime.Dateless;
Expand All @@ -94,6 +99,8 @@ export class ViewMeeting extends BaseViewModel<Meeting> {
}
}

public getUserIds!: () => Id[];

public static COLLECTION = Meeting.COLLECTION;
public static ACCESSIBILITY_FIELD: keyof Meeting = `description`;

Expand Down