From d4e10702cc3794b39aa62f71d6d110cd1edd4a2a Mon Sep 17 00:00:00 2001 From: Sean Engelhardt Date: Wed, 13 Mar 2019 15:16:06 +0100 Subject: [PATCH] Cleanup Repos Add an getViewModelListBehaviorSubject that simplifies how to get most model lists in the view unified update, delete and create methods and removed redundant code from the repos (where it was possible) cleaned up the motion detail to not directly use the DataStore Add information about the "main model" to all ViewModels, to call the correct constructor in the BaseRepo --- client/src/app/app-routing.module.ts | 2 +- .../core/core-services/auth-guard.service.ts | 4 - .../core/core-services/data-send.service.ts | 1 + .../core/core-services/openslides.service.ts | 1 - .../agenda/item-repository.service.ts | 38 +-- .../agenda/topic-repository.service.ts | 49 +--- .../assignment-repository.service.ts | 37 +-- .../base-agenda-content-object-repository.ts | 4 +- .../app/core/repositories/base-repository.ts | 59 +++- .../common/chatmessage-repository.service.ts | 17 +- .../config/config-repository.service.ts | 26 +- .../history/history-repository.service.ts | 21 +- .../mediafile-repository.service.ts | 37 +-- .../motions/category-repository.service.ts | 25 +- ...hange-recommendation-repository.service.ts | 47 +--- .../motion-block-repository.service.ts | 37 +-- ...tion-comment-section-repository.service.ts | 41 +-- .../motions/motion-repository.service.ts | 45 +--- .../statute-paragraph-repository.service.ts | 22 +- .../motions/workflow-repository.service.ts | 44 +-- .../projector/countdown-repository.service.ts | 19 +- .../projector-message-repository.service.ts | 21 +- .../projector/projector-repository.service.ts | 23 +- .../tags/tag-repository.service.ts | 24 +- .../users/group-repository.service.ts | 36 +-- .../users/personal-note-repository.service.ts | 17 +- .../users/user-repository.service.ts | 40 +-- .../head-bar/head-bar.component.scss | 3 + .../search-value-selector.component.ts | 2 +- .../list-of-speakers.component.ts | 5 +- .../topic-detail/topic-detail.component.ts | 9 +- .../site/agenda/models/view-create-topic.ts | 5 + .../src/app/site/agenda/models/view-item.ts | 4 + .../app/site/agenda/models/view-speaker.ts | 5 + .../src/app/site/agenda/models/view-topic.ts | 4 + .../assignments/models/view-assignment.ts | 4 + client/src/app/site/base/base-view-model.ts | 4 + client/src/app/site/base/base-view.ts | 37 ++- client/src/app/site/base/list-view-base.ts | 2 +- .../components/start/start.component.ts | 60 +---- .../site/common/models/view-chatmessage.ts | 4 + .../src/app/site/config/models/view-config.ts | 4 + .../app/site/history/models/view-history.ts | 4 + .../site/mediafiles/models/view-mediafile.ts | 4 + .../app/site/motions/models/view-category.ts | 4 + .../models/view-change-recommendation.ts | 4 + .../site/motions/models/view-motion-block.ts | 4 + .../models/view-motion-comment-section.ts | 4 + .../app/site/motions/models/view-motion.ts | 4 + .../motions/models/view-statute-paragraph.ts | 4 + .../app/site/motions/models/view-workflow.ts | 4 + .../motion-block-list.component.ts | 4 +- .../motion-comment-section-list.component.ts | 19 +- .../manage-submitters.component.ts | 3 +- .../motion-detail.component.html | 8 +- .../motion-detail/motion-detail.component.ts | 255 +++++++++--------- .../motion-detail-routing.module.ts | 2 +- .../site/motions/motions-routing.module.ts | 3 +- .../site/projector/models/view-countdown.ts | 4 + .../models/view-projector-message.ts | 4 + .../site/projector/models/view-projector.ts | 4 + client/src/app/site/tags/models/view-tag.ts | 4 + .../group-list/group-list.component.ts | 2 +- .../site/users/models/view-csv-create-user.ts | 4 + .../src/app/site/users/models/view-group.ts | 4 + .../site/users/models/view-personal-note.ts | 4 + client/src/app/site/users/models/view-user.ts | 4 + 67 files changed, 435 insertions(+), 818 deletions(-) diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts index d935f391a..5a0e0f54b 100644 --- a/client/src/app/app-routing.module.ts +++ b/client/src/app/app-routing.module.ts @@ -29,7 +29,7 @@ const routes: Routes = [ ]; @NgModule({ - imports: [RouterModule.forRoot(routes)], + imports: [RouterModule.forRoot(routes, { onSameUrlNavigation: 'reload' })], exports: [RouterModule] }) export class AppRoutingModule {} diff --git a/client/src/app/core/core-services/auth-guard.service.ts b/client/src/app/core/core-services/auth-guard.service.ts index b9d894bb8..0127d7d82 100644 --- a/client/src/app/core/core-services/auth-guard.service.ts +++ b/client/src/app/core/core-services/auth-guard.service.ts @@ -28,10 +28,6 @@ export class AuthGuard implements CanActivate, CanActivateChild { public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { const basePerm: string | string[] = route.data.basePerm; - console.log('Auth guard'); - console.log('motions.can_see:', this.operator.hasPerms('motions.can_see')); - console.log('motions.can_manage:', this.operator.hasPerms('motions.can_manage')); - if (!basePerm) { return true; } else if (basePerm instanceof Array) { diff --git a/client/src/app/core/core-services/data-send.service.ts b/client/src/app/core/core-services/data-send.service.ts index f3a362cf5..d3e200b3f 100644 --- a/client/src/app/core/core-services/data-send.service.ts +++ b/client/src/app/core/core-services/data-send.service.ts @@ -32,6 +32,7 @@ export class DataSendService { /** * Function to fully update a model on the server. + * TODO: Deprecated (?) * * @param model The model that is meant to be changed. */ diff --git a/client/src/app/core/core-services/openslides.service.ts b/client/src/app/core/core-services/openslides.service.ts index 4626fcd50..cc2697dc3 100644 --- a/client/src/app/core/core-services/openslides.service.ts +++ b/client/src/app/core/core-services/openslides.service.ts @@ -95,7 +95,6 @@ export class OpenSlidesService { * @param userId the id or null for guest */ public async afterLoginBootup(userId: number | null): Promise { - console.log('user id', userId); // Check, which user was logged in last time const lastUserId = await this.storageService.get('lastUserLoggedIn'); // if the user changed, reset the cache and save the new user. diff --git a/client/src/app/core/repositories/agenda/item-repository.service.ts b/client/src/app/core/repositories/agenda/item-repository.service.ts index 453429b48..892f5503c 100644 --- a/client/src/app/core/repositories/agenda/item-repository.service.ts +++ b/client/src/app/core/repositories/agenda/item-repository.service.ts @@ -2,22 +2,21 @@ import { Injectable } from '@angular/core'; import { tap, map } from 'rxjs/operators'; import { Observable } from 'rxjs'; +import { BaseAgendaContentObjectRepository } from '../base-agenda-content-object-repository'; import { BaseRepository } from '../base-repository'; +import { BaseAgendaViewModel } from 'app/site/base/base-agenda-view-model'; +import { BaseViewModel } from 'app/site/base/base-view-model'; import { CollectionStringMapperService } from '../../core-services/collectionStringMapper.service'; import { ConfigService } from 'app/core/ui-services/config.service'; import { DataSendService } from 'app/core/core-services/data-send.service'; import { DataStoreService } from '../../core-services/data-store.service'; import { HttpService } from 'app/core/core-services/http.service'; -import { Identifiable } from 'app/shared/models/base/identifiable'; import { Item } from 'app/shared/models/agenda/item'; import { OSTreeSortEvent } from 'app/shared/components/sorting-tree/sorting-tree.component'; -import { ViewItem } from 'app/site/agenda/models/view-item'; -import { TreeService } from 'app/core/ui-services/tree.service'; -import { BaseAgendaViewModel } from 'app/site/base/base-agenda-view-model'; -import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service'; -import { BaseViewModel } from 'app/site/base/base-view-model'; import { TranslateService } from '@ngx-translate/core'; -import { BaseAgendaContentObjectRepository } from '../base-agenda-content-object-repository'; +import { TreeService } from 'app/core/ui-services/tree.service'; +import { ViewItem } from 'app/site/agenda/models/view-item'; +import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service'; /** * Repository service for users @@ -42,13 +41,13 @@ export class ItemRepositoryService extends BaseRepository { DS: DataStoreService, mapperService: CollectionStringMapperService, viewModelStoreService: ViewModelStoreService, + protected dataSend: DataSendService, private httpService: HttpService, private config: ConfigService, - private dataSend: DataSendService, private treeService: TreeService, private translate: TranslateService ) { - super(DS, mapperService, viewModelStoreService, Item); + super(DS, dataSend, mapperService, viewModelStoreService, Item); } public getVerboseName = (plural: boolean = false) => { @@ -118,18 +117,6 @@ export class ItemRepositoryService extends BaseRepository { } } - /** - * Updates an agenda item - * - * @param update contains the update data - * @param viewItem the item to update - */ - public async update(update: Partial, viewItem: ViewItem): Promise { - const updateItem = viewItem.item; - updateItem.patchValues(update); - return await this.dataSend.partialUpdateModel(updateItem); - } - /** * Trigger the automatic numbering sequence on the server */ @@ -150,15 +137,6 @@ export class ItemRepositoryService extends BaseRepository { await this.httpService.delete(restUrl); } - /** - * @ignore - * - * Agenda items are created implicitly and do not have on create functions - */ - public async create(item: Item): Promise { - throw new Error('Method not implemented.'); - } - /** * Get agenda visibility from the config * diff --git a/client/src/app/core/repositories/agenda/topic-repository.service.ts b/client/src/app/core/repositories/agenda/topic-repository.service.ts index 47490b254..1f583fade 100644 --- a/client/src/app/core/repositories/agenda/topic-repository.service.ts +++ b/client/src/app/core/repositories/agenda/topic-repository.service.ts @@ -2,19 +2,17 @@ import { Injectable } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; -import { Topic } from 'app/shared/models/topics/topic'; -import { Mediafile } from 'app/shared/models/mediafiles/mediafile'; -import { Item } from 'app/shared/models/agenda/item'; +import { BaseAgendaContentObjectRepository } from '../base-agenda-content-object-repository'; +import { CollectionStringMapperService } from 'app/core/core-services/collectionStringMapper.service'; import { DataStoreService } from 'app/core/core-services/data-store.service'; import { DataSendService } from 'app/core/core-services/data-send.service'; +import { Item } from 'app/shared/models/agenda/item'; +import { Mediafile } from 'app/shared/models/mediafiles/mediafile'; +import { Topic } from 'app/shared/models/topics/topic'; import { ViewTopic } from 'app/site/agenda/models/view-topic'; -import { Identifiable } from 'app/shared/models/base/identifiable'; -import { CollectionStringMapperService } from 'app/core/core-services/collectionStringMapper.service'; -import { CreateTopic } from 'app/site/agenda/models/create-topic'; import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service'; import { ViewMediafile } from 'app/site/mediafiles/models/view-mediafile'; import { ViewItem } from 'app/site/agenda/models/view-item'; -import { BaseAgendaContentObjectRepository } from '../base-agenda-content-object-repository'; /** * Repository for topics @@ -34,10 +32,10 @@ export class TopicRepositoryService extends BaseAgendaContentObjectRepository | Partial) => { @@ -69,39 +67,6 @@ export class TopicRepositoryService extends BaseAgendaContentObjectRepository { - return await this.dataSend.createModel(topic); - } - - /** - * Change an existing topic - * - * @param updateData form value containing the data meant to update the topic - * @param viewTopic the topic that should receive the update - */ - public async update(updateData: Partial, viewTopic: ViewTopic): Promise { - const updateTopic = new Topic(); - updateTopic.patchValues(viewTopic.topic); - updateTopic.patchValues(updateData); - - return await this.dataSend.updateModel(updateTopic); - } - - /** - * Delete a topic - * - * @param viewTopic the topic that should be removed - */ - public async delete(viewTopic: ViewTopic): Promise { - return await this.dataSend.deleteModel(viewTopic.topic); - } - /** * Returns an array of all duplicates for a topic * diff --git a/client/src/app/core/repositories/assignments/assignment-repository.service.ts b/client/src/app/core/repositories/assignments/assignment-repository.service.ts index 9a6ac6a89..05d50f94b 100644 --- a/client/src/app/core/repositories/assignments/assignment-repository.service.ts +++ b/client/src/app/core/repositories/assignments/assignment-repository.service.ts @@ -2,19 +2,19 @@ import { Injectable } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; -import { ViewAssignment } from 'app/site/assignments/models/view-assignment'; import { Assignment } from 'app/shared/models/assignments/assignment'; -import { User } from 'app/shared/models/users/user'; -import { Tag } from 'app/shared/models/core/tag'; -import { Item } from 'app/shared/models/agenda/item'; -import { DataStoreService } from '../../core-services/data-store.service'; -import { Identifiable } from 'app/shared/models/base/identifiable'; -import { CollectionStringMapperService } from '../../core-services/collectionStringMapper.service'; -import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service'; -import { ViewItem } from 'app/site/agenda/models/view-item'; -import { ViewUser } from 'app/site/users/models/view-user'; -import { ViewTag } from 'app/site/tags/models/view-tag'; import { BaseAgendaContentObjectRepository } from '../base-agenda-content-object-repository'; +import { CollectionStringMapperService } from '../../core-services/collectionStringMapper.service'; +import { DataSendService } from 'app/core/core-services/data-send.service'; +import { DataStoreService } from '../../core-services/data-store.service'; +import { Item } from 'app/shared/models/agenda/item'; +import { Tag } from 'app/shared/models/core/tag'; +import { User } from 'app/shared/models/users/user'; +import { ViewAssignment } from 'app/site/assignments/models/view-assignment'; +import { ViewItem } from 'app/site/agenda/models/view-item'; +import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service'; +import { ViewTag } from 'app/site/tags/models/view-tag'; +import { ViewUser } from 'app/site/users/models/view-user'; /** * Repository Service for Assignments. @@ -33,11 +33,12 @@ export class AssignmentRepositoryService extends BaseAgendaContentObjectReposito */ public constructor( DS: DataStoreService, + dataSend: DataSendService, mapperService: CollectionStringMapperService, viewModelStoreService: ViewModelStoreService, private translate: TranslateService ) { - super(DS, mapperService, viewModelStoreService, Assignment, [User, Item, Tag]); + super(DS, dataSend, mapperService, viewModelStoreService, Assignment, [User, Item, Tag]); } public getAgendaTitle = (assignment: Partial | Partial) => { @@ -63,16 +64,4 @@ export class AssignmentRepositoryService extends BaseAgendaContentObjectReposito viewAssignment.getAgendaTitleWithType = () => this.getAgendaTitleWithType(viewAssignment); return viewAssignment; } - - public async update(assignment: Partial, viewAssignment: ViewAssignment): Promise { - return null; - } - - public async delete(viewAssignment: ViewAssignment): Promise { - return null; - } - - public async create(assignment: Assignment): Promise { - return null; - } } diff --git a/client/src/app/core/repositories/base-agenda-content-object-repository.ts b/client/src/app/core/repositories/base-agenda-content-object-repository.ts index a58c6b44c..a2bf4de3b 100644 --- a/client/src/app/core/repositories/base-agenda-content-object-repository.ts +++ b/client/src/app/core/repositories/base-agenda-content-object-repository.ts @@ -1,6 +1,7 @@ import { BaseViewModel } from '../../site/base/base-view-model'; import { BaseModel, ModelConstructor } from '../../shared/models/base/base-model'; import { CollectionStringMapperService } from '../core-services/collectionStringMapper.service'; +import { DataSendService } from '../core-services/data-send.service'; import { DataStoreService } from '../core-services/data-store.service'; import { ViewModelStoreService } from '../core-services/view-model-store.service'; import { BaseRepository } from './base-repository'; @@ -21,11 +22,12 @@ export abstract class BaseAgendaContentObjectRepository< */ public constructor( DS: DataStoreService, + dataSend: DataSendService, collectionStringMapperService: CollectionStringMapperService, viewModelStoreService: ViewModelStoreService, baseModelCtor: ModelConstructor, depsModelCtors?: ModelConstructor[] ) { - super(DS, collectionStringMapperService, viewModelStoreService, baseModelCtor, depsModelCtors); + super(DS, dataSend, collectionStringMapperService, viewModelStoreService, baseModelCtor, depsModelCtors); } } diff --git a/client/src/app/core/repositories/base-repository.ts b/client/src/app/core/repositories/base-repository.ts index 1dbaa356e..d10a52d43 100644 --- a/client/src/app/core/repositories/base-repository.ts +++ b/client/src/app/core/repositories/base-repository.ts @@ -3,6 +3,7 @@ import { BehaviorSubject, Observable, Subject } from 'rxjs'; import { BaseViewModel } from '../../site/base/base-view-model'; import { BaseModel, ModelConstructor } from '../../shared/models/base/base-model'; import { CollectionStringMapperService } from '../core-services/collectionStringMapper.service'; +import { DataSendService } from '../core-services/data-send.service'; import { DataStoreService } from '../core-services/data-store.service'; import { Identifiable } from '../../shared/models/base/identifiable'; import { auditTime } from 'rxjs/operators'; @@ -27,6 +28,8 @@ export abstract class BaseRepository = new BehaviorSubject([]); + protected readonly viewModelListAuditSubject: BehaviorSubject = new BehaviorSubject([]); + /** * Observable subject for any changes of view models. */ @@ -59,12 +62,15 @@ export abstract class BaseRepository, protected depsModelCtors?: ModelConstructor[] ) { this._collectionString = baseModelCtor.COLLECTIONSTRING; + + this.getViewModelListObservable().subscribe(x => this.viewModelListAuditSubject.next(x)); } public onAfterAppsLoaded(): void { @@ -137,25 +143,50 @@ export abstract class BaseRepository, viewModel: V): Promise; + public async update(update: object, viewModel: BaseViewModel): Promise { + const sendUpdate = new this.baseModelCtor(); + sendUpdate.patchValues(viewModel.getModel()); + sendUpdate.patchValues(update); + return await this.dataSend.partialUpdateModel(sendUpdate); + } /** * Deletes a given Model - * @param update the update that should be created - * @param viewModel the view model that the update is based on + * Provides a default procedure, but can be overwritten if required + * + * @param viewModel the view model to delete */ - public abstract async delete(viewModel: V): Promise; + public async delete(viewModel: BaseViewModel): Promise { + return await this.dataSend.deleteModel(viewModel.getModel()); + } /** - * Creates a new model - * @param update the update that should be created - * @param viewModel the view model that the update is based on - * TODO: remove the viewModel + * Creates a new model. + * Provides a default procedure, but can be overwritten if required + * + * @param model the model to create on the server */ - public abstract async create(update: M): Promise; + public async create(model: BaseModel): Promise { + // this ensures we get a valid base model, even if the view was just + // sending an object with "as MyModelClass" + const sendModel = new this.baseModelCtor(); + sendModel.patchValues(model); + + // Strips empty fields from the sending mode data. + // required for i.e. users, since group list is mandatory + Object.keys(sendModel).forEach(key => { + if (!sendModel[key]) { + delete sendModel[key]; + } + }); + + return await this.dataSend.createModel(sendModel); + } /** * Creates a view model out of a base model. @@ -209,6 +240,16 @@ export abstract class BaseRepository { + return this.viewModelListAuditSubject; + } + /** * This observable fires every time an object is changed in the repository. */ diff --git a/client/src/app/core/repositories/common/chatmessage-repository.service.ts b/client/src/app/core/repositories/common/chatmessage-repository.service.ts index cc80235f4..f89bbcd22 100644 --- a/client/src/app/core/repositories/common/chatmessage-repository.service.ts +++ b/client/src/app/core/repositories/common/chatmessage-repository.service.ts @@ -1,12 +1,12 @@ import { Injectable } from '@angular/core'; import { DataStoreService } from '../../core-services/data-store.service'; import { BaseRepository } from '../base-repository'; -import { Identifiable } from 'app/shared/models/base/identifiable'; import { CollectionStringMapperService } from '../../core-services/collectionStringMapper.service'; import { ChatMessage } from 'app/shared/models/core/chat-message'; import { ViewChatMessage } from 'app/site/common/models/view-chatmessage'; import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service'; import { TranslateService } from '@ngx-translate/core'; +import { DataSendService } from 'app/core/core-services/data-send.service'; @Injectable({ providedIn: 'root' @@ -14,11 +14,12 @@ import { TranslateService } from '@ngx-translate/core'; export class ChatMessageRepositoryService extends BaseRepository { public constructor( DS: DataStoreService, + dataSend: DataSendService, mapperService: CollectionStringMapperService, viewModelStoreService: ViewModelStoreService, private translate: TranslateService ) { - super(DS, mapperService, viewModelStoreService, ChatMessage); + super(DS, dataSend, mapperService, viewModelStoreService, ChatMessage); } public getVerboseName = (plural: boolean = false) => { @@ -30,16 +31,4 @@ export class ChatMessageRepositoryService extends BaseRepository { - throw new Error('TODO'); - } - - public async update(message: Partial, viewMessage: ViewChatMessage): Promise { - throw new Error('TODO'); - } - - public async delete(viewMessage: ViewChatMessage): Promise { - throw new Error('TODO'); - } } diff --git a/client/src/app/core/repositories/config/config-repository.service.ts b/client/src/app/core/repositories/config/config-repository.service.ts index d94e24cfe..4d420800a 100644 --- a/client/src/app/core/repositories/config/config-repository.service.ts +++ b/client/src/app/core/repositories/config/config-repository.service.ts @@ -4,10 +4,10 @@ import { Observable, BehaviorSubject } from 'rxjs'; import { BaseRepository } from 'app/core/repositories/base-repository'; import { Config } from 'app/shared/models/core/config'; +import { DataSendService } from 'app/core/core-services/data-send.service'; import { DataStoreService } from 'app/core/core-services/data-store.service'; import { ConstantsService } from 'app/core/ui-services/constants.service'; import { HttpService } from 'app/core/core-services/http.service'; -import { Identifiable } from 'app/shared/models/base/identifiable'; import { CollectionStringMapperService } from 'app/core/core-services/collectionStringMapper.service'; import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service'; import { ViewConfig } from 'app/site/config/models/view-config'; @@ -97,13 +97,14 @@ export class ConfigRepositoryService extends BaseRepository */ public constructor( DS: DataStoreService, + dataSend: DataSendService, mapperService: CollectionStringMapperService, viewModelStoreService: ViewModelStoreService, private constantsService: ConstantsService, private http: HttpService, private translate: TranslateService ) { - super(DS, mapperService, viewModelStoreService, Config); + super(DS, dataSend, mapperService, viewModelStoreService, Config); this.constantsService.get('OpenSlidesConfigVariables').subscribe(constant => { this.createConfigStructure(constant); @@ -142,6 +143,7 @@ export class ConfigRepositoryService extends BaseRepository this.updateConfigListObservable(); // Could be raise in error if the root injector is not known + // TODO go over repo this.DS.changeObservable.subscribe(model => { if (model instanceof Config) { this.viewModelStore[model.id] = this.createViewModel(model as Config); @@ -219,26 +221,6 @@ export class ConfigRepositoryService extends BaseRepository await this.http.put('rest/' + updatedConfig.collectionString + '/' + updatedConfig.key + '/', updatedConfig); } - /** - * This particular function should never be necessary since the creation of config - * values is not planed. - * - * Function exists solely to correctly implement {@link BaseRepository} - */ - public async delete(config: ViewConfig): Promise { - throw new Error('Config variables cannot be deleted'); - } - - /** - * This particular function should never be necessary since the creation of config - * values is not planed. - * - * Function exists solely to correctly implement {@link BaseRepository} - */ - public async create(config: Config): Promise { - throw new Error('Config variables cannot be created'); - } - /** * initially create the config structure from the given constant. * @param constant diff --git a/client/src/app/core/repositories/history/history-repository.service.ts b/client/src/app/core/repositories/history/history-repository.service.ts index 26582039d..d1348b8b6 100644 --- a/client/src/app/core/repositories/history/history-repository.service.ts +++ b/client/src/app/core/repositories/history/history-repository.service.ts @@ -5,13 +5,13 @@ import { DataStoreService } from 'app/core/core-services/data-store.service'; import { BaseRepository } from 'app/core/repositories/base-repository'; import { History } from 'app/shared/models/core/history'; import { User } from 'app/shared/models/users/user'; -import { Identifiable } from 'app/shared/models/base/identifiable'; import { HttpService } from 'app/core/core-services/http.service'; import { ViewHistory } from 'app/site/history/models/view-history'; import { TimeTravelService } from 'app/core/core-services/time-travel.service'; import { ViewModelStoreService } from 'app/core/core-services/view-model-store.service'; import { ViewUser } from 'app/site/users/models/view-user'; import { TranslateService } from '@ngx-translate/core'; +import { DataSendService } from 'app/core/core-services/data-send.service'; /** * Repository for the history. @@ -32,13 +32,14 @@ export class HistoryRepositoryService extends BaseRepository { @@ -58,22 +59,6 @@ export class HistoryRepositoryService extends BaseRepository { - throw new Error('You cannot create a history object'); - } - - /** - * Clients usually do not need to modify existing history objects - * @ignore - */ - public async update(): Promise { - throw new Error('You cannot update a history object'); - } - /** * Sends a post-request to delete history objects */ diff --git a/client/src/app/core/repositories/mediafiles/mediafile-repository.service.ts b/client/src/app/core/repositories/mediafiles/mediafile-repository.service.ts index c1ed85997..90023e3da 100644 --- a/client/src/app/core/repositories/mediafiles/mediafile-repository.service.ts +++ b/client/src/app/core/repositories/mediafiles/mediafile-repository.service.ts @@ -32,11 +32,11 @@ export class MediafileRepositoryService extends BaseRepository { @@ -56,39 +56,6 @@ export class MediafileRepositoryService extends BaseRepository