diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0820d5411..67b38f9ea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
To check the difference between the last releaes and the latest dev status, click the link above.
+## [0.69.1] - 2022-11-08
+
+### Fixed
+
+1. Reload only iframe without feature creators' section (#2290)
+1. Update camera's HD icon from LOW/HD to HD with/without background (#2264)
+1. Fix the wording of asset listing target from CaptureClub to Capture App (#2276)
+1. Improve the wording of canNotPerformMintAndShareAction (#2277)
+
## [0.69.0] - 2022-11-01
### Changed
@@ -1892,7 +1901,8 @@ This is the first release! _Capture Lite_ is a cross-platform app adapted from [
- Web - see the demo [here](https://github.com/numbersprotocol/capture-lite#demo-app)
- Android - the APK file `app-debug.apk` is attached to this release
-[unreleased]: https://github.com/numbersprotocol/capture-lite/compare/0.69.0...HEAD
+[unreleased]: https://github.com/numbersprotocol/capture-lite/compare/0.69.1...HEAD
+[0.69.1]: https://github.com/numbersprotocol/capture-lite/compare/0.69.0...0.69.1
[0.69.0]: https://github.com/numbersprotocol/capture-lite/compare/0.68.0...0.69.0
[0.68.0]: https://github.com/numbersprotocol/capture-lite/compare/0.67.1...0.68.0
[0.67.1]: https://github.com/numbersprotocol/capture-lite/compare/0.67.0...0.67.1
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 36cdcd5ab..3bca6fe83 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -6,8 +6,8 @@ android {
applicationId "io.numbersprotocol.capturelite"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 450
- versionName "0.69.0"
+ versionCode 451
+ versionName "0.69.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildFeatures {
diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj
index 374e60aad..8c4fec203 100644
--- a/ios/App/App.xcodeproj/project.pbxproj
+++ b/ios/App/App.xcodeproj/project.pbxproj
@@ -370,7 +370,7 @@
INFOPLIST_FILE = App/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.7;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- MARKETING_VERSION = 0.69.0;
+ MARKETING_VERSION = 0.69.1;
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
PRODUCT_BUNDLE_IDENTIFIER = io.numbersprotocol.capturelite;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -397,7 +397,7 @@
INFOPLIST_FILE = App/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.7;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- MARKETING_VERSION = 0.69.0;
+ MARKETING_VERSION = 0.69.1;
PRODUCT_BUNDLE_IDENTIFIER = io.numbersprotocol.capturelite;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = NumbersAppDistributionV4;
diff --git a/ios/App/ExportOptions.plist b/ios/App/ExportOptions.plist
index 2c0f17f5f..0b5e14a09 100644
--- a/ios/App/ExportOptions.plist
+++ b/ios/App/ExportOptions.plist
@@ -9,7 +9,7 @@
provisioningProfiles
io.numbersprotocol.capturelite
- NumbersAppDistributionV2
+ NumbersAppDistributionV4
signingCertificate
Apple Distribution
diff --git a/package-lock.json b/package-lock.json
index b0a5faabb..7a20587e6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "capture-lite",
- "version": "0.69.0",
+ "version": "0.69.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "capture-lite",
- "version": "0.69.0",
+ "version": "0.69.1",
"dependencies": {
"packages": "^0.0.8",
"@angular/animations": "^14.2.0",
diff --git a/package.json b/package.json
index f963c0de7..7ff8ce4b0 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "capture-lite",
- "version": "0.69.0",
+ "version": "0.69.1",
"author": "numbersprotocol",
"homepage": "https://numbersprotocol.io/",
"scripts": {
diff --git a/src/app/features/home/custom-camera/custom-camera.page.scss b/src/app/features/home/custom-camera/custom-camera.page.scss
index c2cffbaad..3d70a947c 100644
--- a/src/app/features/home/custom-camera/custom-camera.page.scss
+++ b/src/app/features/home/custom-camera/custom-camera.page.scss
@@ -32,11 +32,8 @@ mat-icon.flash-camera-button {
mat-icon.camera-quality-button {
position: absolute;
- top: 4px;
- left: 48px;
- font-size: 56px;
- width: 56px;
- height: 56px;
+ top: 16px;
+ left: 64px;
}
mat-icon.close-camera-button {
diff --git a/src/app/features/home/details/actions/actions.page.ts b/src/app/features/home/details/actions/actions.page.ts
index 8a5b7ecaa..15b26b460 100644
--- a/src/app/features/home/details/actions/actions.page.ts
+++ b/src/app/features/home/details/actions/actions.page.ts
@@ -88,7 +88,7 @@ export class ActionsPage {
concatMap(([response, cid]) => {
if (response.count > 0) {
throw new Error(
- this.translocoService.translate('message.hasListedInCaptureClub')
+ this.translocoService.translate('message.hasListedInCaptureApp')
);
}
return of(cid);
@@ -107,9 +107,7 @@ export class ActionsPage {
);
if (listedAsSeries) {
throw new Error(
- this.translocoService.translate(
- 'message.hasListedInCaptureClub'
- )
+ this.translocoService.translate('message.hasListedInCaptureApp')
);
}
if (response.next == null) {
diff --git a/src/app/features/home/details/details.page.ts b/src/app/features/home/details/details.page.ts
index 210eb2e8d..2c4293c0e 100644
--- a/src/app/features/home/details/details.page.ts
+++ b/src/app/features/home/details/details.page.ts
@@ -546,7 +546,7 @@ export class DetailsPage {
switchMap(response => {
if (response.count === 0 || !response.results[0].enabled) {
throw new Error(
- this.translocoService.translate('message.notListedInCaptureClub')
+ this.translocoService.translate('message.notListedInCaptureApp')
);
}
return this.diaBackendStoreService.unpublish$(response.results[0].id);
diff --git a/src/app/features/home/explore-tab/explore-tab/explore-tab.component.html b/src/app/features/home/explore-tab/explore-tab/explore-tab.component.html
index 73df6a4bd..9b09469c2 100644
--- a/src/app/features/home/explore-tab/explore-tab/explore-tab.component.html
+++ b/src/app/features/home/explore-tab/explore-tab/explore-tab.component.html
@@ -13,7 +13,7 @@
"
>
diff --git a/src/app/features/home/explore-tab/explore-tab/explore-tab.component.ts b/src/app/features/home/explore-tab/explore-tab/explore-tab.component.ts
index e41f17ddd..24dbbc5af 100644
--- a/src/app/features/home/explore-tab/explore-tab/explore-tab.component.ts
+++ b/src/app/features/home/explore-tab/explore-tab/explore-tab.component.ts
@@ -1,7 +1,10 @@
import { Component } from '@angular/core';
+import { DomSanitizer } from '@angular/platform-browser';
+import { combineLatest } from 'rxjs';
import { map } from 'rxjs/operators';
import { DiaBackendAuthService } from '../../../../shared/dia-backend/auth/dia-backend-auth.service';
import { BUBBLE_IFRAME_URL } from '../../../../shared/dia-backend/secret';
+import { IframeService } from '../../../../shared/iframe/iframe.service';
import { NetworkService } from '../../../../shared/network/network.service';
@Component({
@@ -10,17 +13,22 @@ import { NetworkService } from '../../../../shared/network/network.service';
styleUrls: ['./explore-tab.component.scss'],
})
export class ExploreTabComponent {
- readonly bubbleIframeUrlWithCachedJWTToke$ =
- this.diaBackendAuthService.cachedQueryJWTToken$.pipe(
- map(token => {
- return `${BUBBLE_IFRAME_URL}/?token=${token.access}&refresh_token=${token.refresh}`;
- })
- );
+ readonly bubbleIframeUrlWithCachedJWTToke$ = combineLatest([
+ this.diaBackendAuthService.cachedQueryJWTToken$,
+ this.iframeService.exploreTabRefreshRequested$,
+ ]).pipe(
+ map(([token, _]) => {
+ const url = `${BUBBLE_IFRAME_URL}/?token=${token.access}&refresh_token=${token.refresh}`;
+ return this.sanitizer.bypassSecurityTrustResourceUrl(url);
+ })
+ );
readonly networkConnected$ = this.networkService.connected$;
constructor(
private readonly networkService: NetworkService,
- private readonly diaBackendAuthService: DiaBackendAuthService
+ private readonly diaBackendAuthService: DiaBackendAuthService,
+ private readonly iframeService: IframeService,
+ private readonly sanitizer: DomSanitizer
) {}
}
diff --git a/src/app/features/home/home.page.ts b/src/app/features/home/home.page.ts
index 2b9907ca7..e8e944dbe 100644
--- a/src/app/features/home/home.page.ts
+++ b/src/app/features/home/home.page.ts
@@ -29,6 +29,7 @@ import { DiaBackendService } from '../../shared/dia-backend/service/dia-backend-
import { DiaBackendTransactionRepository } from '../../shared/dia-backend/transaction/dia-backend-transaction-repository.service';
import { DiaBackendWalletService } from '../../shared/dia-backend/wallet/dia-backend-wallet.service';
import { ErrorService } from '../../shared/error/error.service';
+import { IframeService } from '../../shared/iframe/iframe.service';
import { MigrationService } from '../../shared/migration/service/migration.service';
import { OnboardingService } from '../../shared/onboarding/onboarding.service';
import { UserGuideService } from '../../shared/user-guide/user-guide.service';
@@ -85,7 +86,8 @@ export class HomePage {
private readonly goProBluetoothService: GoProBluetoothService,
private readonly diaBackendWalletService: DiaBackendWalletService,
private readonly userGuideService: UserGuideService,
- private readonly platform: Platform
+ private readonly platform: Platform,
+ private readonly iframeService: IframeService
) {
this.downloadExpiredPostCaptures();
}
@@ -344,7 +346,8 @@ export class HomePage {
// eslint-disable-next-line class-methods-use-this
navigateToExploreTab() {
if (this.selectedTabIndex === 0) {
- window.location.reload();
+ // window.location.reload();
+ this.iframeService.refreshExploreTabIframe();
}
}
diff --git a/src/app/shared/iframe/iframe.service.spec.ts b/src/app/shared/iframe/iframe.service.spec.ts
new file mode 100644
index 000000000..701fbac89
--- /dev/null
+++ b/src/app/shared/iframe/iframe.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { IframeService } from './iframe.service';
+
+describe('IframeService', () => {
+ let service: IframeService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(IframeService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/iframe/iframe.service.ts b/src/app/shared/iframe/iframe.service.ts
new file mode 100644
index 000000000..818e8c52f
--- /dev/null
+++ b/src/app/shared/iframe/iframe.service.ts
@@ -0,0 +1,13 @@
+import { Injectable } from '@angular/core';
+import { BehaviorSubject } from 'rxjs';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class IframeService {
+ readonly exploreTabRefreshRequested$ = new BehaviorSubject(new Date());
+
+ refreshExploreTabIframe() {
+ this.exploreTabRefreshRequested$.next(new Date());
+ }
+}
diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts
index d8bb35162..c0f5b555f 100644
--- a/src/app/shared/shared.module.ts
+++ b/src/app/shared/shared.module.ts
@@ -17,6 +17,7 @@ import { CapacitorPluginsModule } from './capacitor-plugins/capacitor-plugins.mo
import { ContactSelectionDialogComponent } from './contact-selection-dialog/contact-selection-dialog.component';
import { FriendInvitationDialogComponent } from './contact-selection-dialog/friend-invitation-dialog/friend-invitation-dialog.component';
import { ExportPrivateKeyModalComponent } from './export-private-key-modal/export-private-key-modal.component';
+import { IframeService } from './iframe/iframe.service';
import { MaterialModule } from './material/material.module';
import { MediaRebrandedComponent } from './media/component/media-rebranded.component';
import { MediaComponent } from './media/component/media.component';
@@ -60,6 +61,7 @@ const providers = [
GoProWifiService,
GoProMediaService,
UserGuideService,
+ IframeService,
];
@NgModule({
diff --git a/src/assets/i18n/en-us.json b/src/assets/i18n/en-us.json
index 42062d591..b60250790 100644
--- a/src/assets/i18n/en-us.json
+++ b/src/assets/i18n/en-us.json
@@ -190,8 +190,8 @@
"mintNftAlert": "Once the NFT is minted, photo and its information can be accessed publicly. Do you still want to proceed?",
"sentSuccessfully": "Sent Successfully",
"confirmCopyPrivateKey": "Warning: Please do not expose your private key to anyone. Lost of private key may cause your account to be lost permanently.",
- "hasListedInCaptureClub": "This asset has already been listed in CaptureClub.",
- "notListedInCaptureClub": "This asset is not listed in CaptureClub"
+ "hasListedInCaptureApp": "This asset has already been listed in Capture App.",
+ "notListedInCaptureApp": "This asset is not listed in Capture App"
},
"error": {
"validationError": "Invalid operation. Please check your input again.",
@@ -279,7 +279,7 @@
"remove": "Remove"
},
"error": {
- "canNotPerformMintAndShareAction": "Can not perform Mint & Share action",
+ "canNotPerformMintAndShareAction": "This asset is minted so that can not perform Mint & Share action",
"canNotPerformOpenNetworkActions": "Can not perform open Network Actions page",
"transferOwnershipActionIsUnavailable": "Transfer ownership action is unavailable. Please try again later.",
"viewOnCaptureClubIsUnavailable": "View on CaptureClub action is unavailable. Please try again later.",
diff --git a/src/assets/i18n/zh-tw.json b/src/assets/i18n/zh-tw.json
index fd818e163..7ad5d7858 100644
--- a/src/assets/i18n/zh-tw.json
+++ b/src/assets/i18n/zh-tw.json
@@ -190,8 +190,8 @@
"mintNftAlert": "NFT 代幣鑄造後,影像以及所有資訊都將可被公開檢視。確定要繼續嗎?",
"sentSuccessfully": "成功送出",
"confirmCopyPrivateKey": "警告:請不要向任何人揭露您的金鑰,未保管好金鑰可能導致您永遠失去您的帳號。",
- "hasListedInCaptureClub": "該資產已在 CaptureClub 上架。",
- "notListedInCaptureClub": "該資產未上架 CaptureClub"
+ "hasListedInCaptureApp": "該資產已在 Capture App 上架。",
+ "notListedInCaptureApp": "該資產未上架 Capture App"
},
"error": {
"validationError": "操作或輸入有誤,請確認您的操作正確。",
@@ -279,7 +279,7 @@
"remove": "移除"
},
"error": {
- "canNotPerformMintAndShareAction": "無法執行鑄造及分享",
+ "canNotPerformMintAndShareAction": "該資產已鑄造完成,無法再次鑄造與分享",
"canNotPerformOpenNetworkActions": "無法打開網絡動作頁面",
"transferOwnershipActionIsUnavailable": "暫時無法轉換所有權,請稍後再試。",
"viewOnCaptureClubIsUnavailable": "暫時無法在 CaptureClub 觀看,請稍後再試。",
diff --git a/src/assets/images/icons/capture-rebrand-camera-hq.svg b/src/assets/images/icons/capture-rebrand-camera-hq.svg
index 7cf83439a..00e721d50 100644
--- a/src/assets/images/icons/capture-rebrand-camera-hq.svg
+++ b/src/assets/images/icons/capture-rebrand-camera-hq.svg
@@ -1,3 +1,3 @@
-