From 0ddb7ab837776f9dd3793dfc61732cc7d545cf77 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sun, 18 Dec 2016 13:16:11 +0100 Subject: [PATCH] Bugfixes --- src/Squidex/app-config/webpack.run.dev.js | 2 +- src/Squidex/app/app.module.ts | 2 + .../pages/clients/clients-page.component.ts | 31 +++++-- .../contributors-page.component.html | 4 +- .../contributors-page.component.ts | 39 +++++--- .../languages/languages-page.component.html | 4 +- .../languages/languages-page.component.ts | 37 +++++--- .../angular/autocomplete.component.ts | 91 +++++++------------ src/Squidex/app/framework/declarations.ts | 1 + .../framework/services/message-bus.spec.ts | 42 +++++++++ .../app/framework/services/message-bus.ts | 35 +++++++ .../shared/components/history.component.html | 2 +- .../shared/components/history.component.ts | 45 ++++----- src/Squidex/app/shared/declarations.ts | 2 + src/Squidex/app/shared/utils/messages.ts | 8 ++ src/Squidex/tslint.json | 2 +- 16 files changed, 217 insertions(+), 130 deletions(-) create mode 100644 src/Squidex/app/framework/services/message-bus.spec.ts create mode 100644 src/Squidex/app/framework/services/message-bus.ts create mode 100644 src/Squidex/app/shared/utils/messages.ts diff --git a/src/Squidex/app-config/webpack.run.dev.js b/src/Squidex/app-config/webpack.run.dev.js index 585480ef6..0ab9c1267 100644 --- a/src/Squidex/app-config/webpack.run.dev.js +++ b/src/Squidex/app-config/webpack.run.dev.js @@ -13,7 +13,7 @@ module.exports = webpackMerge(runConfig, { * See: http://webpack.github.io/docs/configuration.html#devtool * See: https://github.com/webpack/docs/wiki/build-performance#sourcemaps */ - devtool: 'cheap-module-eval-source-map', + devtool: 'cheap-module-source-map', //debug: true, diff --git a/src/Squidex/app/app.module.ts b/src/Squidex/app/app.module.ts index 98d609574..688b17d77 100644 --- a/src/Squidex/app/app.module.ts +++ b/src/Squidex/app/app.module.ts @@ -25,6 +25,7 @@ import { HistoryService, LanguageService, LocalStoreService, + MessageBus, MustBeAuthenticatedGuard, MustBeNotAuthenticatedGuard, NotificationService, @@ -81,6 +82,7 @@ export function configCurrency() { HistoryService, LanguageService, LocalStoreService, + MessageBus, MustBeAuthenticatedGuard, MustBeNotAuthenticatedGuard, NotificationService, diff --git a/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts b/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts index a3b424504..918fc0419 100644 --- a/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts +++ b/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts @@ -14,7 +14,9 @@ import { AppComponentBase, AppsStoreService, CreateAppClientDto, + HistoryChannelUpdated, ImmutableArray, + MessageBus, NotificationService, UpdateAppClientDto, UsersProviderService @@ -44,6 +46,7 @@ export class ClientsPageComponent extends AppComponentBase implements OnInit { constructor(apps: AppsStoreService, notifications: NotificationService, users: UsersProviderService, private readonly appClientsService: AppClientsService, + private readonly messageBus: MessageBus, private readonly formBuilder: FormBuilder ) { super(apps, notifications, users); @@ -57,7 +60,7 @@ export class ClientsPageComponent extends AppComponentBase implements OnInit { this.appName() .switchMap(app => this.appClientsService.getClients(app).retry(2)) .subscribe(dtos => { - this.appClients = ImmutableArray.of(dtos); + this.updateClients(ImmutableArray.of(dtos)); }, error => { this.notifyError(error); }); @@ -67,17 +70,19 @@ export class ClientsPageComponent extends AppComponentBase implements OnInit { this.appName() .switchMap(app => this.appClientsService.deleteClient(app, client.id)) .subscribe(() => { - this.appClients = this.appClients.remove(client); + this.updateClients(this.appClients.remove(client)); }, error => { this.notifyError(error); }); } public renameClient(client: AppClientDto, name: string) { + const request = new UpdateAppClientDto(name); + this.appName() - .switchMap(app => this.appClientsService.updateClient(app, client.id, new UpdateAppClientDto(name))) + .switchMap(app => this.appClientsService.updateClient(app, client.id, request)) .subscribe(() => { - this.appClients = this.appClients.replace(client, rename(client, name)); + this.updateClients(this.appClients.replace(client, rename(client, name))); }, error => { this.notifyError(error); }); @@ -91,21 +96,27 @@ export class ClientsPageComponent extends AppComponentBase implements OnInit { const dto = new CreateAppClientDto(this.addClientForm.controls['name'].value); + const reset = () => { + this.addClientForm.reset(); + this.addClientForm.enable(); + }; + this.appName() .switchMap(app => this.appClientsService.postClient(app, dto)) .subscribe(dto => { - this.appClients = this.appClients.push(dto); - this.reset(); + this.updateClients(this.appClients.push(dto)); + reset(); }, error => { this.notifyError(error); - this.reset(); + reset(); }); } } - private reset() { - this.addClientForm.reset(); - this.addClientForm.enable(); + private updateClients(clients: ImmutableArray) { + this.appClients = clients; + + this.messageBus.publish(new HistoryChannelUpdated()); } } diff --git a/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.html b/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.html index 68f2b5f48..faa3879b1 100644 --- a/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.html +++ b/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.html @@ -50,12 +50,12 @@ {{userEmail(contributor.contributorId) | async}} - - diff --git a/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.ts b/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.ts index 093c2e3fc..c87c809a0 100644 --- a/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.ts +++ b/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.ts @@ -17,7 +17,9 @@ import { AuthService, AutocompleteItem, AutocompleteSource, + HistoryChannelUpdated, ImmutableArray, + MessageBus, NotificationService, UserDto, UsersProviderService, @@ -63,6 +65,8 @@ function changePermission(contributor: AppContributorDto, permission: string): A export class ContributorsPageComponent extends AppComponentBase implements OnInit { public appContributors = ImmutableArray.empty(); + public currentUserId: string; + public usersDataSource: UsersDataSource; public usersPermissions = [ 'Owner', @@ -80,6 +84,7 @@ export class ContributorsPageComponent extends AppComponentBase implements OnIni constructor(apps: AppsStoreService, notifications: NotificationService, users: UsersProviderService, private readonly appContributorsService: AppContributorsService, + private readonly messageBus: MessageBus, private readonly usersService: UsersService, private readonly authService: AuthService, private readonly formBuilder: FormBuilder @@ -90,6 +95,8 @@ export class ContributorsPageComponent extends AppComponentBase implements OnIni } public ngOnInit() { + this.currentUserId = this.authService.user.id; + this.load(); } @@ -97,19 +104,29 @@ export class ContributorsPageComponent extends AppComponentBase implements OnIni this.appName() .switchMap(app => this.appContributorsService.getContributors(app).retry(2)) .subscribe(dtos => { - this.appContributors = ImmutableArray.of(dtos); + this.updateContributors(ImmutableArray.of(dtos)); + }, error => { + this.notifyError(error); + }); + } + + public removeContributor(contributor: AppContributorDto) { + this.appName() + .switchMap(app => this.appContributorsService.deleteContributor(app, contributor.contributorId)) + .subscribe(() => { + this.updateContributors(this.appContributors.remove(contributor)); }, error => { this.notifyError(error); }); } public assignContributor() { - const contributor = new AppContributorDto(this.addContributorForm.get('user').value.model.id, 'Editor'); + const newContributor = new AppContributorDto(this.addContributorForm.get('user').value.model.id, 'Editor'); this.appName() - .switchMap(app => this.appContributorsService.postContributor(app, contributor)) + .switchMap(app => this.appContributorsService.postContributor(app, newContributor)) .subscribe(() => { - this.appContributors = this.appContributors.push(contributor); + this.updateContributors(this.appContributors.push(newContributor)); }, error => { this.notifyError(error); }); @@ -123,20 +140,16 @@ export class ContributorsPageComponent extends AppComponentBase implements OnIni this.appName() .switchMap(app => this.appContributorsService.postContributor(app, newContributor)) .subscribe(() => { - this.appContributors = this.appContributors.replace(contributor, newContributor); + this.updateContributors(this.appContributors.replace(contributor, newContributor)); }, error => { this.notifyError(error); }); } - public removeContributor(contributor: AppContributorDto) { - this.appName() - .switchMap(app => this.appContributorsService.deleteContributor(app, contributor.contributorId)) - .subscribe(() => { - this.appContributors = this.appContributors.remove(contributor); - }, error => { - this.notifyError(error); - }); + private updateContributors(contributors: ImmutableArray) { + this.appContributors = contributors; + + this.messageBus.publish(new HistoryChannelUpdated()); } } diff --git a/src/Squidex/app/features/settings/pages/languages/languages-page.component.html b/src/Squidex/app/features/settings/pages/languages/languages-page.component.html index 4fc945110..8da7ad28e 100644 --- a/src/Squidex/app/features/settings/pages/languages/languages-page.component.html +++ b/src/Squidex/app/features/settings/pages/languages/languages-page.component.html @@ -47,8 +47,8 @@ -