diff --git a/android/app/src/main/java/io/numbersprotocol/capturelite/MainActivity.java b/android/app/src/main/java/io/numbersprotocol/capturelite/MainActivity.java index 6fd4ac450..19ac1e520 100644 --- a/android/app/src/main/java/io/numbersprotocol/capturelite/MainActivity.java +++ b/android/app/src/main/java/io/numbersprotocol/capturelite/MainActivity.java @@ -10,7 +10,6 @@ import java.util.ArrayList; import android.content.res.Configuration; import android.webkit.WebSettings; -import android.webkit.WebView; public class MainActivity extends BridgeActivity { void setDarkMode() { diff --git a/src/app/features/home/capture-tab/capture-tab.component.html b/src/app/features/home/capture-tab/capture-tab.component.html index 559fcc9af..396956bbd 100644 --- a/src/app/features/home/capture-tab/capture-tab.component.html +++ b/src/app/features/home/capture-tab/capture-tab.component.html @@ -1,4 +1,7 @@ - + + + + diff --git a/src/app/features/home/capture-tab/capture-tab.component.scss b/src/app/features/home/capture-tab/capture-tab.component.scss index 1b796ffe2..f360f8b7c 100644 --- a/src/app/features/home/capture-tab/capture-tab.component.scss +++ b/src/app/features/home/capture-tab/capture-tab.component.scss @@ -13,6 +13,9 @@ div.mat-title { padding-left: 16px; padding-right: 16px; box-shadow: none; +} + +#user-card { background-color: var(--capture-color-dark-background, white); } diff --git a/src/app/features/home/capture-tab/capture-tab.component.ts b/src/app/features/home/capture-tab/capture-tab.component.ts index 02a9c01a8..104d75d4a 100644 --- a/src/app/features/home/capture-tab/capture-tab.component.ts +++ b/src/app/features/home/capture-tab/capture-tab.component.ts @@ -4,8 +4,9 @@ import { AlertController } from '@ionic/angular'; import { TranslocoService } from '@ngneat/transloco'; import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { groupBy } from 'lodash-es'; -import { catchError, map } from 'rxjs/operators'; +import { catchError, finalize, map } from 'rxjs/operators'; import { BlockingActionService } from '../../../shared/blocking-action/blocking-action.service'; +import { DiaBackendAsseRefreshingService } from '../../../shared/dia-backend/asset/refreshing/dia-backend-asset-refreshing.service'; import { DiaBackendAuthService } from '../../../shared/dia-backend/auth/dia-backend-auth.service'; import { ErrorService } from '../../../shared/error/error.service'; import { getOldProof } from '../../../shared/repositories/proof/old-proof-adapter'; @@ -37,6 +38,7 @@ export class CaptureTabComponent { constructor( private readonly proofRepository: ProofRepository, private readonly diaBackendAuthService: DiaBackendAuthService, + private readonly diaBackendAssetRefreshingService: DiaBackendAsseRefreshingService, private readonly alertController: AlertController, private readonly translocoService: TranslocoService, private readonly errorService: ErrorService, @@ -94,4 +96,11 @@ export class CaptureTabComponent { trackCaptureItem(_: number, item: Proof) { return getOldProof(item).hash; } + + refreshCaptures(event: Event) { + this.diaBackendAssetRefreshingService + .refresh() + .pipe(finalize(() => (event).detail.complete())) + .subscribe(); + } } diff --git a/src/app/features/home/home.page.html b/src/app/features/home/home.page.html index 3a725ae1a..32c0c546b 100644 --- a/src/app/features/home/home.page.html +++ b/src/app/features/home/home.page.html @@ -1,122 +1,124 @@ - - - - - {{ username$ | ngrxPush }} - - - - - {{ t('profile') }} - - - - - {{ t('contacts') }} - - - - - {{ t('settings') }} - - - - - CaptureClub - - - - - {{ t('privacy') }} - - - - - {{ t('about') }} - - - - - - - - - - - - - - - apps - - - - - - - - - - - move_to_inbox - - - - - - + + + + + + {{ username$ | ngrxPush }} + + + + + {{ t('profile') }} + + + + + {{ t('contacts') }} + + + + + {{ t('settings') }} + + + + + CaptureClub + + + + + {{ t('privacy') }} + + + + + {{ t('about') }} + + + + + + + + + + + + + + + apps + + + + + + + + + + + move_to_inbox + + + + + + + diff --git a/src/app/shared/dia-backend/asset/refreshing/dia-backend-asset-refreshing.service.spec.ts b/src/app/shared/dia-backend/asset/refreshing/dia-backend-asset-refreshing.service.spec.ts new file mode 100644 index 000000000..d4390fbfe --- /dev/null +++ b/src/app/shared/dia-backend/asset/refreshing/dia-backend-asset-refreshing.service.spec.ts @@ -0,0 +1,18 @@ +import { TestBed } from '@angular/core/testing'; +import { SharedTestingModule } from '../../../shared-testing.module'; +import { DiaBackendAsseRefreshingService } from './dia-backend-asset-refreshing.service'; + +describe('DiaBackendAssetUploadingService', () => { + let service: DiaBackendAsseRefreshingService; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [SharedTestingModule], + }); + service = TestBed.inject(DiaBackendAsseRefreshingService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/shared/dia-backend/asset/refreshing/dia-backend-asset-refreshing.service.ts b/src/app/shared/dia-backend/asset/refreshing/dia-backend-asset-refreshing.service.ts new file mode 100644 index 000000000..4bf56e2f4 --- /dev/null +++ b/src/app/shared/dia-backend/asset/refreshing/dia-backend-asset-refreshing.service.ts @@ -0,0 +1,43 @@ +import { HttpErrorResponse } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { EMPTY, forkJoin } from 'rxjs'; +import { catchError, concatMap, first } from 'rxjs/operators'; +import { HttpErrorCode } from '../../../error/error.service'; +import { ProofRepository } from '../../../repositories/proof/proof-repository.service'; +import { DiaBackendAssetRepository } from '../dia-backend-asset-repository.service'; +import { DiaBackendAssetPrefetchingService } from '../prefetching/dia-backend-asset-prefetching.service'; + +@Injectable({ + providedIn: 'root', +}) +export class DiaBackendAsseRefreshingService { + constructor( + private readonly assetRepository: DiaBackendAssetRepository, + private readonly proofRepository: ProofRepository, + private readonly diaBackendAssetPrefetchingService: DiaBackendAssetPrefetchingService + ) {} + + refresh() { + return this.proofRepository.all$.pipe( + first(), + concatMap(proofs => + forkJoin( + proofs.map(proof => + this.assetRepository.fetchByProof$(proof).pipe( + catchError((err: unknown) => { + if ( + err instanceof HttpErrorResponse && + err.status === HttpErrorCode.NOT_FOUND + ) { + this.proofRepository.remove(proof); + } + return EMPTY; + }) + ) + ) + ) + ), + concatMap(() => this.diaBackendAssetPrefetchingService.prefetch()) + ); + } +} diff --git a/src/theme/variables.scss b/src/theme/variables.scss index 8a3d026ab..1dff3e1fb 100644 --- a/src/theme/variables.scss +++ b/src/theme/variables.scss @@ -193,7 +193,7 @@ $dark-theme: mat-dark-theme( } body.dark { - @include angular-material-theme($dark-theme); + @include angular-material-color($dark-theme); --capture-color-dark-background: #36393f; --capture-color-dark-contrast: #444;