import { Component, OnInit } from '@angular/core'; import { SpinnerService } from '@core/services/spinner.service'; import { SFTPAPI } from '@core/typings/api/sftp.typing'; import { DebounceFactory, PaginationOptions, TableDataFactory } from '@yourcause/common'; import { ModalFactory } from '@yourcause/common/modals'; import { CredentialsModalComponent } from '../credentials-modal/credentials-modal.component'; import DeleteCredentialsModalComponent from '../delete-credentials-modal/delete-credentials-modal.component'; import { SFTPService } from '../sftp.service'; @Component({ selector: 'gc-sftp-credentials-page', templateUrl: 'sftp-credentials-page.component.html', styleUrls: ['./sftp-credentials-page.component.scss'] }) export class SftpCredentialsPageComponent implements OnInit { tableDataFactory: TableDataFactory; constructor ( private modalFactory: ModalFactory, private spinnerService: SpinnerService, private sftpService: SFTPService ) { } ngOnInit () { this.tableDataFactory = DebounceFactory.createSimple( async (options: PaginationOptions) => { const result = await this.sftpService.getCredentialsList(options); return { success: true, data: { recordCount: result.recordCount, records: result.records } }; }); } async deleteModal (row: SFTPAPI.SFTPCredentialsListView) { let reports: SFTPAPI.Report[]; let context = 'able'; if (!row.canDelete) { context = 'unable'; reports = await this.sftpService.getReportsTiedToCredentials( row.id ); } const response = await this.modalFactory.open( DeleteCredentialsModalComponent, { context, reports, name: row.siteName, id: row.id } ); if (response) { await this.sftpService.deleteSFTPCredentials(row.id); this.tableDataFactory.reset.emit(); } } async credentialsModal ( context: 'add'|'edit', row?: SFTPAPI.SFTPCredentialsListView ) { const response = await this.modalFactory.open( CredentialsModalComponent, { credential: row, context } ); if (response) { this.spinnerService.startSpinner(); const success = await this.sftpService.createUpdateSFTPCredentials(response); if (success) { this.tableDataFactory.reset.emit(); } this.spinnerService.stopSpinner(); } } }