+
+
+
+ This fulfills a bigger plan
+
+
+
-
-
-
- This fulfills a bigger plan
-
-
-
-
-
-
-
- This fulfills
- {{
- capitalizeAndInsertSpacesBeforeCapsWithAPrefix(
- giveDetails?.fulfillsType || "",
- )
- }}
-
-
+
+
+
+
+ This fulfills
+ {{
+ serverUtil.capitalizeAndInsertSpacesBeforeCapsWithAPrefix(
+ giveDetailsOfferFulfillment.offerType || "Offer",
+ )
+ }}
+
+
+
@@ -493,6 +493,11 @@ export default class ConfirmGiftView extends Vue {
confsVisibleErrorMessage = "";
confsVisibleToIdList: string[] = []; // list of DIDs that can see any confirmer
giveDetails?: GiveSummaryRecord;
+ // Additional offer information extracted from the fulfills array
+ giveDetailsOfferFulfillment: {
+ offerHandleId?: string;
+ offerType?: string;
+ } | null = null;
giverName = "";
issuerName = "";
isLoading = false;
@@ -648,6 +653,8 @@ export default class ConfirmGiftView extends Vue {
if (resp.status === 200) {
this.giveDetails = resp.data.data[0];
+ // Extract offer information from the fulfills array
+ this.extractOfferFulfillment();
} else {
throw new Error("Error getting detailed give info: " + resp.status);
}
@@ -707,6 +714,15 @@ export default class ConfirmGiftView extends Vue {
}
}
+ /**
+ * Extract offer fulfillment information from the fulfills array
+ */
+ private extractOfferFulfillment() {
+ this.giveDetailsOfferFulfillment = libsUtil.extractOfferFulfillment(
+ this.giveDetails?.fullClaim?.fulfills
+ );
+ }
+
/**
* Fetches confirmer information for the claim
*/
@@ -849,27 +865,6 @@ export default class ConfirmGiftView extends Vue {
);
}
- /**
- * Formats type string for display by adding spaces before capitals
- * Optionally adds a prefix
- *
- * @param text - Text to format
- * @param prefix - Optional prefix to add
- * @returns Formatted string
- */
- capitalizeAndInsertSpacesBeforeCapsWithAPrefix(text: string): string {
- const word = this.capitalizeAndInsertSpacesBeforeCaps(text);
- if (word) {
- // if the word starts with a vowel, use "an" instead of "a"
- const firstLetter = word[0].toLowerCase();
- const vowels = ["a", "e", "i", "o", "u"];
- const particle = vowels.includes(firstLetter) ? "an" : "a";
- return particle + " " + word;
- } else {
- return "";
- }
- }
-
/**
* Initiates sharing of claim information
* Handles share functionality based on platform capabilities
@@ -894,11 +889,5 @@ export default class ConfirmGiftView extends Vue {
this.veriClaim = serverUtil.BLANK_GENERIC_SERVER_RECORD;
this.veriClaimDump = "";
}
-
- capitalizeAndInsertSpacesBeforeCaps(text: string) {
- return !text
- ? ""
- : text[0].toUpperCase() + text.substr(1).replace(/([A-Z])/g, " $1");
- }
}
diff --git a/src/views/ContactQRScanFullView.vue b/src/views/ContactQRScanFullView.vue
index bb52bea4..42358b65 100644
--- a/src/views/ContactQRScanFullView.vue
+++ b/src/views/ContactQRScanFullView.vue
@@ -144,6 +144,7 @@ import {
QR_TIMEOUT_LONG,
} from "@/constants/notifications";
import { createNotifyHelpers, NotifyFunction } from "../utils/notify";
+import { showSeedPhraseReminder } from "@/utils/seedPhraseReminder";
interface QRScanResult {
rawValue?: string;
@@ -622,6 +623,15 @@ export default class ContactQRScanFull extends Vue {
*/
async handleBack() {
await this.cleanupScanner();
+
+ // Show seed phrase backup reminder if needed
+ try {
+ const settings = await this.$accountSettings();
+ showSeedPhraseReminder(!!settings.hasBackedUpSeed, this.$notify);
+ } catch (error) {
+ logger.error("Error checking seed backup status:", error);
+ }
+
this.$router.back();
}
diff --git a/src/views/ContactQRScanShowView.vue b/src/views/ContactQRScanShowView.vue
index 45885a02..c5175d84 100644
--- a/src/views/ContactQRScanShowView.vue
+++ b/src/views/ContactQRScanShowView.vue
@@ -163,6 +163,7 @@ import { QRScannerFactory } from "@/services/QRScanner/QRScannerFactory";
import { CameraState } from "@/services/QRScanner/types";
import { PlatformServiceMixin } from "@/utils/PlatformServiceMixin";
import { createNotifyHelpers } from "@/utils/notify";
+import { showSeedPhraseReminder } from "@/utils/seedPhraseReminder";
import {
NOTIFY_QR_INITIALIZATION_ERROR,
NOTIFY_QR_CAMERA_IN_USE,
@@ -319,6 +320,15 @@ export default class ContactQRScanShow extends Vue {
async handleBack(): Promise