Skip to content

Commit e8ff741

Browse files
Merge pull request #1137 from rocket-admin/fixes
fix unsubscribe for tab titles
2 parents 13a2a1c + 5f2c88b commit e8ff741

File tree

6 files changed

+49
-49
lines changed

6 files changed

+49
-49
lines changed

frontend/src/app/components/audit/audit.component.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
import { Component, OnInit, ViewChild } from '@angular/core';
21
import { AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';
2+
import { Component, OnInit, ViewChild } from '@angular/core';
33
import { Subscription, merge } from 'rxjs';
4+
import { take, tap } from 'rxjs/operators';
45

56
import { Angulartics2OnModule } from 'angulartics2';
67
import { AuditDataSource } from './audit-data-source';
8+
import { BannerComponent } from '../ui-components/banner/banner.component';
9+
import { CompanyService } from 'src/app/services/company.service';
710
import { ConnectionsService } from 'src/app/services/connections.service';
811
import { FormsModule } from '@angular/forms';
912
import { InfoDialogComponent } from './info-dialog/info-dialog.component';
@@ -15,6 +18,7 @@ import { MatPaginator } from '@angular/material/paginator';
1518
import { MatPaginatorModule } from '@angular/material/paginator';
1619
import { MatSelectModule } from '@angular/material/select';
1720
import { MatTableModule } from '@angular/material/table';
21+
import { PlaceholderTableDataComponent } from '../skeletons/placeholder-table-data/placeholder-table-data.component';
1822
import { RouterModule } from '@angular/router';
1923
import { ServerError } from 'src/app/models/alert';
2024
import { TableProperties } from 'src/app/models/table';
@@ -24,10 +28,6 @@ import { User } from '@sentry/angular-ivy';
2428
import { UsersService } from 'src/app/services/users.service';
2529
import { environment } from 'src/environments/environment';
2630
import { normalizeTableName } from 'src/app/lib/normalize';
27-
import { tap } from 'rxjs/operators';
28-
import { BannerComponent } from '../ui-components/banner/banner.component';
29-
import { PlaceholderTableDataComponent } from '../skeletons/placeholder-table-data/placeholder-table-data.component';
30-
import { CompanyService } from 'src/app/services/company.service';
3131

3232
@Component({
3333
selector: 'app-audit',
@@ -90,11 +90,11 @@ export class AuditComponent implements OnInit {
9090
}
9191

9292
ngOnInit(): void {
93-
this.getTitleSubscription = this._connections.getCurrentConnectionTitle().subscribe(connectionTitle => {
94-
this.title.setTitle(`Audit - ${connectionTitle} | ${this._companyService.companyTabTitle || 'Rocketadmin'}`);
95-
96-
this.getTitleSubscription.unsubscribe();
97-
});
93+
this._companyService.getCurrentTabTitle()
94+
.pipe(take(1))
95+
.subscribe(tabTitle => {
96+
this.title.setTitle(`Connections | ${tabTitle || 'Rocketadmin'}`);
97+
});
9898
this.connectionID = this._connections.currentConnectionID;
9999
this.accesLevel = this._connections.currentConnectionAccessLevel;
100100
this.columns = ['Table', 'User', 'Action', 'Date', 'Status', 'Details'];

frontend/src/app/components/connect-db/connect-db.component.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import { Alert, AlertActionType, AlertType } from 'src/app/models/alert';
44
import { Angulartics2, Angulartics2Module } from 'angulartics2';
55
import { Component, NgZone, OnInit } from '@angular/core';
66
import { Connection, ConnectionType, DBtype, TestConnection } from 'src/app/models/connection';
7+
import { Subscription, take } from 'rxjs';
78

89
import { AccessLevel } from 'src/app/models/user';
910
import { AlertComponent } from '../ui-components/alert/alert.component';
1011
import { CdkCopyToClipboard } from '@angular/cdk/clipboard';
1112
import { CommonModule } from '@angular/common';
13+
import { CompanyService } from 'src/app/services/company.service';
1214
import { ConnectionsService } from 'src/app/services/connections.service';
1315
import { Db2CredentialsFormComponent } from './db-credentials-forms/db2-credentials-form/db2-credentials-form.component';
1416
import { DbConnectionConfirmDialogComponent } from './db-connection-confirm-dialog/db-connection-confirm-dialog.component';
@@ -36,13 +38,11 @@ import { OracledbCredentialsFormComponent } from './db-credentials-forms/oracled
3638
import { PostgresCredentialsFormComponent } from './db-credentials-forms/postgres-credentials-form/postgres-credentials-form.component';
3739
import { Router } from '@angular/router';
3840
import { RouterModule } from '@angular/router';
39-
import { Subscription } from 'rxjs';
4041
import { Title } from '@angular/platform-browser';
4142
import { UserService } from 'src/app/services/user.service';
4243
import { environment } from 'src/environments/environment';
4344
import googlIPsList from 'src/app/consts/google-IP-addresses';
4445
import isIP from 'validator/lib/isIP';
45-
import { CompanyService } from 'src/app/services/company.service';
4646

4747
@Component({
4848
selector: 'app-connect-db',
@@ -115,15 +115,15 @@ export class ConnectDBComponent implements OnInit {
115115
ngOnInit() {
116116
this.connectionID = this._connections.currentConnectionID;
117117

118-
this.getTitleSubscription = this._connections.getCurrentConnectionTitle().subscribe(connectionTitle => {
119-
if (this.connectionID) {
120-
this.title.setTitle(`Credentials — ${connectionTitle} | ${this._company.companyTabTitle || 'Rocketadmin'}`);
121-
} else {
122-
this.title.setTitle(`Add new database | ${this._company.companyTabTitle || 'Rocketadmin'}`);
123-
}
124-
125-
this.getTitleSubscription.unsubscribe();
126-
});
118+
this._connections.getCurrentConnectionTitle()
119+
.pipe(take(1))
120+
.subscribe(connectionTitle => {
121+
if (this.connectionID) {
122+
this.title.setTitle(`Credentials — ${connectionTitle} | ${this._company.companyTabTitle || 'Rocketadmin'}`);
123+
} else {
124+
this.title.setTitle(`Add new database | ${this._company.companyTabTitle || 'Rocketadmin'}`);
125+
}
126+
});
127127

128128
if (!this.connectionID) {
129129
this._user.sendUserAction('CONNECTION_CREATION_NOT_FINISHED').subscribe();

frontend/src/app/components/connection-settings/connection-settings.component.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnDestroy, OnInit, Inject } from '@angular/core';
1+
import { Component, OnInit, Inject } from '@angular/core';
22

33
import { AccessLevel } from 'src/app/models/user';
44
import { Angulartics2Module, Angulartics2 } from 'angulartics2';
@@ -14,7 +14,7 @@ import { MatSelectModule } from '@angular/material/select';
1414
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
1515
import { RouterModule } from '@angular/router';
1616
import { ServerError } from 'src/app/models/alert';
17-
import { Subscription } from 'rxjs';
17+
import { Subscription, take } from 'rxjs';
1818
import { TableProperties } from 'src/app/models/table';
1919
import { TablesService } from 'src/app/services/tables.service';
2020
import { Title } from '@angular/platform-browser';
@@ -49,7 +49,7 @@ import { CompanyService } from 'src/app/services/company.service';
4949
ZapierComponent
5050
]
5151
})
52-
export class ConnectionSettingsComponent implements OnInit, OnDestroy {
52+
export class ConnectionSettingsComponent implements OnInit {
5353

5454
public isSaas = (environment as any).saas;
5555
public connectionID: string | null = null;
@@ -83,9 +83,11 @@ export class ConnectionSettingsComponent implements OnInit, OnDestroy {
8383
) { }
8484

8585
ngOnInit(): void {
86-
this.getTitleSubscription = this._connections.getCurrentConnectionTitle().subscribe(connectionTitle => {
87-
this.title.setTitle(`Settings - ${connectionTitle} | ${this._company.companyTabTitle || 'Rocketadmin'}`);
88-
});
86+
this._connections.getCurrentConnectionTitle()
87+
.pipe(take(1))
88+
.subscribe(connectionTitle => {
89+
this.title.setTitle(`Settings - ${connectionTitle} | ${this._company.companyTabTitle || 'Rocketadmin'}`);
90+
});
8991

9092
this.connectionID = this._connections.currentConnectionID;
9193

@@ -113,10 +115,6 @@ export class ConnectionSettingsComponent implements OnInit, OnDestroy {
113115
)
114116
}
115117

116-
ngOnDestroy() {
117-
this.getTitleSubscription.unsubscribe();
118-
}
119-
120118
get connectionName() {
121119
return this._connections.currentConnection.title || this._connections.currentConnection.database;
122120
}

frontend/src/app/components/connections-list/connections-list.component.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@ import { MatDividerModule } from '@angular/material/divider';
1212
import { MatIconModule } from '@angular/material/icon';
1313
import { PlaceholderConnectionsComponent } from '../skeletons/placeholder-connections/placeholder-connections.component';
1414
import { RouterModule } from '@angular/router';
15+
import { Subscription } from 'rxjs';
16+
import { Title } from '@angular/platform-browser';
1517
import { UiSettings } from 'src/app/models/ui-settings';
1618
import { UiSettingsService } from 'src/app/services/ui-settings.service';
1719
import { User } from 'src/app/models/user';
1820
import { UserService } from 'src/app/services/user.service';
19-
import { Title } from '@angular/platform-browser';
20-
import { Subscription } from 'rxjs';
21+
import { take } from 'rxjs/operators';
2122

2223
@Component({
2324
selector: 'app-connections-list',
@@ -56,11 +57,11 @@ export class ConnectionsListComponent implements OnInit {
5657
) { }
5758

5859
ngOnInit(): void {
59-
this.getTitleSubscription = this._companyService.getCurrentTabTitle().subscribe(tabTitle => {
60-
this.title.setTitle(`Connections | ${tabTitle || 'Rocketadmin'}`);
61-
62-
this.getTitleSubscription.unsubscribe();
63-
});
60+
this._companyService.getCurrentTabTitle()
61+
.pipe(take(1))
62+
.subscribe(tabTitle => {
63+
this.title.setTitle(`Connections | ${tabTitle || 'Rocketadmin'}`);
64+
});
6465

6566
this._userService.cast.subscribe(user => {
6667
this.currentUser = user;

frontend/src/app/components/db-table-row-edit/db-table-row-edit.component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@ import * as JSON5 from 'json5';
22

33
import { ActivatedRoute, Router } from '@angular/router';
44
import { Alert, AlertType, ServerError } from 'src/app/models/alert';
5-
import { Component, NgZone, OnDestroy, OnInit } from '@angular/core';
5+
import { Component, NgZone, OnInit } from '@angular/core';
66
import { CustomAction, CustomEvent, TableField, TableForeignKey, TablePermissions, Widget } from 'src/app/models/table';
77
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
8+
import { MatProgressSpinnerModule, MatSpinner } from '@angular/material/progress-spinner';
89
import { UIwidgets, defaultTimestampValues, fieldTypes, timestampTypes } from 'src/app/consts/field-types';
910

1011
import { AlertComponent } from '../ui-components/alert/alert.component';
1112
import { BannerComponent } from '../ui-components/banner/banner.component';
1213
import { BbBulkActionConfirmationDialogComponent } from '../dashboard/db-bulk-action-confirmation-dialog/db-bulk-action-confirmation-dialog.component';
1314
import { BreadcrumbsComponent } from '../ui-components/breadcrumbs/breadcrumbs.component';
1415
import { CommonModule } from '@angular/common';
16+
import { CompanyService } from 'src/app/services/company.service';
1517
import { ConnectionsService } from 'src/app/services/connections.service';
1618
import { DBtype } from 'src/app/models/connection';
1719
import { DbActionLinkDialogComponent } from '../dashboard/db-action-link-dialog/db-action-link-dialog.component';
@@ -37,8 +39,6 @@ import { TablesService } from 'src/app/services/tables.service';
3739
import { Title } from '@angular/platform-browser';
3840
import { getTableTypes } from 'src/app/lib/setup-table-row-structure';
3941
import { normalizeTableName } from '../../lib/normalize';
40-
import { MatProgressSpinnerModule, MatSpinner } from '@angular/material/progress-spinner';
41-
import { CompanyService } from 'src/app/services/company.service';
4242

4343
@Component({
4444
selector: 'app-db-table-row-edit',

frontend/src/app/components/users/users.component.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1+
import { CommonModule, NgClass, NgForOf, NgIf } from '@angular/common';
12
import { Component, OnDestroy, OnInit } from '@angular/core';
23
import { GroupUser, User, UserGroup, UserGroupInfo } from 'src/app/models/user';
3-
import { Observable, Subscription, first, forkJoin, tap } from 'rxjs';
4+
import { MatAccordion, MatExpansionModule } from '@angular/material/expansion';
5+
import { Observable, Subscription, first, forkJoin, take, tap } from 'rxjs';
46

57
import { Angulartics2 } from 'angulartics2';
68
import { Angulartics2OnModule } from 'angulartics2';
9+
import { CompanyService } from 'src/app/services/company.service';
710
import { Connection } from 'src/app/models/connection';
811
import { ConnectionsService } from 'src/app/services/connections.service';
912
import { GroupAddDialogComponent } from './group-add-dialog/group-add-dialog.component';
1013
import { GroupDeleteDialogComponent } from './group-delete-dialog/group-delete-dialog.component';
1114
import { GroupNameEditDialogComponent } from './group-name-edit-dialog/group-name-edit-dialog.component';
1215
import { MatButtonModule } from '@angular/material/button';
1316
import { MatDialog } from '@angular/material/dialog';
14-
import { MatAccordion, MatExpansionModule } from '@angular/material/expansion';
1517
import { MatIconModule } from '@angular/material/icon';
1618
import { MatListModule } from '@angular/material/list';
1719
import { MatTooltipModule } from '@angular/material/tooltip';
18-
import { CommonModule, NgClass, NgForOf, NgIf } from '@angular/common';
1920
import { PermissionsAddDialogComponent } from './permissions-add-dialog/permissions-add-dialog.component';
2021
import { PlaceholderUserGroupComponent } from '../skeletons/placeholder-user-group/placeholder-user-group.component';
2122
import { PlaceholderUserGroupsComponent } from '../skeletons/placeholder-user-groups/placeholder-user-groups.component';
@@ -24,7 +25,6 @@ import { UserAddDialogComponent } from './user-add-dialog/user-add-dialog.compon
2425
import { UserDeleteDialogComponent } from './user-delete-dialog/user-delete-dialog.component';
2526
import { UserService } from 'src/app/services/user.service';
2627
import { UsersService } from '../../services/users.service';
27-
import { CompanyService } from 'src/app/services/company.service';
2828
import { differenceBy } from "lodash";
2929

3030
@Component({
@@ -71,9 +71,11 @@ export class UsersComponent implements OnInit, OnDestroy {
7171
) { }
7272

7373
ngOnInit() {
74-
this.getTitleSubscription = this._connections.getCurrentConnectionTitle().subscribe(connectionTitle => {
75-
this.title.setTitle(`User permissions - ${connectionTitle} | ${this._company.companyTabTitle || 'Rocketadmin'}`);
76-
});
74+
this._connections.getCurrentConnectionTitle()
75+
.pipe(take(1))
76+
.subscribe(connectionTitle => {
77+
this.title.setTitle(`User permissions - ${connectionTitle} | ${this._company.companyTabTitle || 'Rocketadmin'}`);
78+
});
7779
this.connectionID = this._connections.currentConnectionID;
7880
this.getUsersGroups();
7981

@@ -108,7 +110,6 @@ export class UsersComponent implements OnInit, OnDestroy {
108110
}
109111

110112
ngOnDestroy() {
111-
this.getTitleSubscription.unsubscribe();
112113
this.usersSubscription.unsubscribe();
113114
}
114115

0 commit comments

Comments
 (0)