@ -1,123 +1,156 @@
// Notification message constants for user-facing notifications
// Add new notification messages here as needed
//
// DOCUMENTATION FORMAT:
// Each constant is documented with a comment showing where it's used:
// "Used in: ComponentName.vue (method - specific usage description)"
// This helps maintain consistency and track usage across the codebase.
//
// Functions are documented with the specific component methods that call them.
// Constants marked with "[Component usage not yet documented]" need their
// usage locations verified and documented.
// Used in: [Component usage not yet documented]
export const NOTIFY_PERSON_HIDDEN = {
title : "Person Outside Your Network" ,
message : "This person is not visible to you." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_UNKNOWN_PERSON = {
title : "Unidentified Person" ,
message : "Nobody specific was recognized." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_CONTACT_LOADING_ISSUE = {
title : "Contact Loading Issue" ,
message : "Some contact information may be unavailable." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_FEED_LOADING_ISSUE = {
title : "Feed Loading Issue" ,
message : "Some feed data may be unavailable. Pull to refresh." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_CONFIRMATION_ERROR = {
title : "Error" ,
message : "There was a problem submitting the confirmation." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_DEFAULT_TO_ACTIVE_DID = {
title : "Your Info" ,
message : "No user was specified so showing your info." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_CONTACT_DELETED = {
title : "Deleted" ,
message : "Contact has been removed." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_CONTACT_DELETE_FAILED = {
title : "Error" ,
message : "Failed to delete contact." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_REGISTRATION_SUCCESS = {
title : "Registration Success" ,
message : "has been registered." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_REGISTRATION_ERROR = {
title : "Registration Error" ,
message : "Something went wrong during registration." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_SERVER_ACCESS_ERROR = {
title : "Error" ,
message : "There was a problem accessing the server. Try again later." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_NO_IDENTITY_ERROR = {
title : "No Identity" ,
message : "There is no identity to use to check visibility." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_VISIBILITY_SET = {
title : "Visibility Set" ,
message : "visibility updated." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_VISIBILITY_REFRESHED = {
title : "Visibility Refreshed" ,
message : "visibility status updated." ,
} ;
// ContactsView.vue specific constants
// Used in: ContactsView.vue (processInviteJwt method - blank invite error)
export const NOTIFY_BLANK_INVITE = {
title : "Blank Invite" ,
message :
"The invite was not included, which can happen when your iOS device cuts off the link. Try pasting the full link into a browser." ,
} ;
// Used in: ContactsView.vue (processInviteJwt method - registration success)
export const NOTIFY_INVITE_REGISTRATION_SUCCESS = {
title : "Registered" ,
message : "You are now registered." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_INVITE_ERROR = {
title : "Error with Invite" ,
message : "Got an error sending the invite." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_ONBOARDING_CONFIRM = {
title : "They're Added To Your List" ,
message : "Would you like to go to the main page now?" ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_REGISTER_NOT_AVAILABLE = {
title : "Not Registered" ,
message : "You must get registered before you can create invites." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_REGISTER_PROCESSING = {
title : "Processing" ,
message : "Sent..." ,
} ;
// Used in: getRegisterPersonSuccessMessage function
export const NOTIFY_REGISTER_PERSON_SUCCESS = {
title : "Registration Success" ,
message : "has been registered." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_REGISTER_PERSON_ERROR = {
title : "Registration Error" ,
message : "Something went wrong during registration." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_VISIBILITY_ERROR = {
title : "Error Setting Visibility" ,
message : "Could not set visibility on the server." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_UNCONFIRMED_HOURS = {
title : "Unconfirmed Hours" ,
message : "Would you like to confirm some of those hours?" ,
@ -136,6 +169,7 @@ export const NOTIFY_UNCONFIRMED_HOURS_DYNAMIC = {
// Complex modal constants (for raw $notify calls with advanced features)
// MembersList.vue complex modals
// Used in: MembersList.vue (complex modal for adding contacts)
export const NOTIFY_ADD_CONTACT_FIRST = {
title : "Add as Contact First?" ,
text : "This person is not in your contacts. Would you like to add them as a contact first?" ,
@ -143,6 +177,7 @@ export const NOTIFY_ADD_CONTACT_FIRST = {
noText : "Skip Adding Contact" ,
} ;
// Used in: MembersList.vue (complex modal for continuing without adding)
export const NOTIFY_CONTINUE_WITHOUT_ADDING = {
title : "Continue Without Adding?" ,
text : "Are you sure you want to proceed with admission? If they are not a contact, you will not know their name after this meeting." ,
@ -150,11 +185,13 @@ export const NOTIFY_CONTINUE_WITHOUT_ADDING = {
} ;
// ContactsView.vue complex modals
// Used in: ContactsView.vue (addContact method - complex modal for registration)
export const NOTIFY_REGISTER_CONTACT = {
title : "Register" ,
text : "Do you want to register them?" ,
} ;
// Used in: ContactsView.vue (showOnboardMeetingDialog method - complex modal for onboarding meeting)
export const NOTIFY_ONBOARDING_MEETING = {
title : "Onboarding Meeting" ,
text : "Would you like to start a new meeting?" ,
@ -163,44 +200,52 @@ export const NOTIFY_ONBOARDING_MEETING = {
} ;
// ProjectViewView.vue complex modals
// Used in: ProjectViewView.vue (complex modal for claim confirmation)
export const NOTIFY_CONFIRM_CLAIM = {
title : "Confirm" ,
text : "Do you personally confirm that this is true?" ,
} ;
// UserProfileView.vue constants
// Used in: UserProfileView.vue (profile loading error)
export const NOTIFY_PROFILE_LOAD_ERROR = {
title : "Profile Load Error" ,
message : "There was a problem loading the profile." ,
} ;
// ProjectsView.vue constants
// Used in: ProjectsView.vue (no account error)
export const NOTIFY_NO_ACCOUNT_ERROR = {
title : "No Account Found" ,
message : "You need an identifier to load your projects." ,
} ;
// Used in: ProjectsView.vue (project load error)
export const NOTIFY_PROJECT_LOAD_ERROR = {
title : "Project Load Error" ,
message : "Failed to get projects from the server." ,
} ;
// Used in: ProjectsView.vue (project initialization error)
export const NOTIFY_PROJECT_INIT_ERROR = {
title : "Initialization Error" ,
message : "Something went wrong loading your projects." ,
} ;
// Used in: ProjectsView.vue (offers load error)
export const NOTIFY_OFFERS_LOAD_ERROR = {
title : "Offer Load Error" ,
message : "Failed to get offers from the server." ,
} ;
// Used in: ProjectsView.vue (offers fetch error)
export const NOTIFY_OFFERS_FETCH_ERROR = {
title : "Offer Fetch Error" ,
message : "Got an error loading offers." ,
} ;
// ProjectsView.vue complex modals
// Used in: ProjectsView.vue (complex modal for camera sharing method)
export const NOTIFY_CAMERA_SHARE_METHOD = {
title : "Are you nearby with cameras?" ,
text : "If so, we'll use those with QR codes to share." ,
@ -209,265 +254,340 @@ export const NOTIFY_CAMERA_SHARE_METHOD = {
} ;
// SharedPhotoView.vue constants
// Used in: SharedPhotoView.vue (photo data loading error)
export const NOTIFY_SHARED_PHOTO_LOAD_ERROR = {
title : "Error" ,
message : "Got an error loading this data." ,
} ;
// Used in: SharedPhotoView.vue (photo saving error)
export const NOTIFY_SHARED_PHOTO_SAVE_ERROR = {
title : "Error" ,
message : "There was a problem saving the picture." ,
} ;
// OfferDialog.vue constants
// Used in: OfferDialog.vue (settings retrieval error)
export const NOTIFY_OFFER_SETTINGS_ERROR = {
title : "Error" ,
message : "There was an error retrieving your settings." ,
} ;
// Used in: OfferDialog.vue (offer recording in progress)
export const NOTIFY_OFFER_RECORDING = {
text : "Recording the offer..." ,
title : "" ,
} ;
// Used in: OfferDialog.vue (identity required for offer)
export const NOTIFY_OFFER_IDENTITY_REQUIRED = {
title : "Error" ,
message : "You must select an identity before you can record an offer." ,
} ;
// Used in: OfferDialog.vue (description required for offer)
export const NOTIFY_OFFER_DESCRIPTION_REQUIRED = {
title : "Error" ,
message : "You must enter a description or some number of {unit}." ,
} ;
// Used in: OfferDialog.vue (offer creation error)
export const NOTIFY_OFFER_CREATION_ERROR = {
title : "Error" ,
message : "There was an error creating the offer." ,
} ;
// Used in: OfferDialog.vue (offer recorded successfully)
export const NOTIFY_OFFER_SUCCESS = {
title : "Success" ,
message : "That offer was recorded." ,
} ;
// Used in: OfferDialog.vue (offer submission error)
export const NOTIFY_OFFER_SUBMISSION_ERROR = {
title : "Error" ,
message : "There was an error recording the offer." ,
} ;
// PhotoDialog.vue constants
// Used in: PhotoDialog.vue (settings retrieval error)
export const NOTIFY_PHOTO_SETTINGS_ERROR = {
title : "Error" ,
message : "There was an error retrieving your settings." ,
} ;
// Used in: PhotoDialog.vue (photo capture error)
export const NOTIFY_PHOTO_CAPTURE_ERROR = {
title : "Error" ,
message : "Failed to take picture. Please try again." ,
} ;
// Used in: PhotoDialog.vue (camera access error)
export const NOTIFY_PHOTO_CAMERA_ERROR = {
title : "Camera Error" ,
message : "Could not access camera. Please check permissions and try again." ,
} ;
// Used in: PhotoDialog.vue (photo upload error)
export const NOTIFY_PHOTO_UPLOAD_ERROR = {
title : "Upload Error" ,
message : "Failed to upload image. Please try again." ,
} ;
// Used in: PhotoDialog.vue (photo upload success)
export const NOTIFY_PHOTO_UPLOAD_SUCCESS = {
title : "Success" ,
message : "Image uploaded successfully." ,
} ;
// Used in: PhotoDialog.vue (unsupported file format)
export const NOTIFY_PHOTO_UNSUPPORTED_FORMAT = {
title : "Unsupported Format" ,
message : "This file format is not supported. Please try a different image." ,
} ;
// Used in: PhotoDialog.vue (file size too large)
export const NOTIFY_PHOTO_SIZE_ERROR = {
title : "File Too Large" ,
message : "Image file is too large. Please choose a smaller image." ,
} ;
// Used in: PhotoDialog.vue (image processing error)
export const NOTIFY_PHOTO_PROCESSING_ERROR = {
title : "Processing Error" ,
message : "Failed to process image. Please try again." ,
} ;
// OnboardMeetingSetupView.vue constants
// Used in: OnboardMeetingSetupView.vue (meeting time validation)
export const NOTIFY_MEETING_INVALID_TIME = {
title : "Invalid Time" ,
message : "Select a future time for the meeting expiration." ,
} ;
// Used in: OnboardMeetingSetupView.vue (meeting name validation)
export const NOTIFY_MEETING_NAME_REQUIRED = {
title : "Invalid Name" ,
message : "Please enter your name." ,
} ;
// Used in: OnboardMeetingSetupView.vue (meeting password validation)
export const NOTIFY_MEETING_PASSWORD_REQUIRED = {
title : "Invalid Password" ,
message : "Please enter a password." ,
} ;
// Used in: OnboardMeetingSetupView.vue (meeting creation success)
export const NOTIFY_MEETING_CREATED = {
title : "Success" ,
message : "Meeting created." ,
} ;
// Used in: OnboardMeetingSetupView.vue (meeting deletion success)
export const NOTIFY_MEETING_DELETED = {
title : "Success" ,
message : "Meeting deleted successfully." ,
} ;
// Used in: OnboardMeetingSetupView.vue (member link copied)
export const NOTIFY_MEETING_LINK_COPIED = {
title : "Copied" ,
message : "The member link is copied to the clipboard." ,
} ;
// ContactsView.vue extracted notification messages
// Used in: ContactsView.vue (onClickNewContact method - no contact info error)
export const NOTIFY_CONTACT_NO_INFO = {
title : "No Contact Info" ,
message : "There was no contact info to add. Try the other green buttons." ,
} ;
// Used in: [Component usage not yet documented]
export const NOTIFY_CONTACT_INVALID_URL = {
title : "Invalid URL" ,
message : "Invalid contact URL format." ,
} ;
// Used in: ContactsView.vue (onClickNewContact method - CSV contacts added success)
export const NOTIFY_CONTACTS_ADDED_CSV = {
title : "Contacts Added" ,
message : "Each contact was added. Nothing was sent to the server." ,
} ;
// Used in: ContactsView.vue (onClickNewContact method - CSV add error)
export const NOTIFY_CONTACTS_ADD_ERROR = {
title : "Add Contacts Error" ,
message : "An error occurred. Some contacts may have been added." ,
} ;
// Used in: ContactsView.vue (onClickNewContact method - JSON array parse error)
export const NOTIFY_CONTACT_INPUT_PARSE_ERROR = {
title : "Invalid Contact List" ,
message : "The input could not be parsed." ,
} ;
// Used in: ContactsView.vue (onClickNewContact method - no contact found in input)
export const NOTIFY_CONTACT_NO_CONTACT_FOUND = {
title : "No Contact Info" ,
message : "No contact info was found in that input." ,
} ;
// Used in: ContactsView.vue (addContact method - contact has no DID)
export const NOTIFY_CONTACT_NO_DID = {
title : "Incomplete Contact" ,
message : "Cannot add a contact without a DID." ,
} ;
// Used in: ContactsView.vue (addContact method - invalid DID format)
export const NOTIFY_CONTACT_INVALID_DID = {
title : "Invalid DID" ,
message : "The DID must begin with 'did:'" ,
} ;
// Used in: ContactsView.vue (addContact method - contact import error)
export const NOTIFY_CONTACT_IMPORT_ERROR = {
title : "Contact Not Added" ,
message : "An error prevented this import." ,
} ;
// Used in: ContactsView.vue (addContact method - contact already exists)
export const NOTIFY_CONTACT_IMPORT_CONFLICT = {
title : "Contact Not Added" ,
message :
"A contact with that DID is already in your contact list. Edit them directly below." ,
} ;
// Used in: ContactsView.vue (addContact method - constraint error)
export const NOTIFY_CONTACT_IMPORT_CONSTRAINT = {
title : "Contact Not Added" ,
message : "Check that the contact doesn't conflict with any you already have." ,
} ;
// Used in: ContactsView.vue (loadGives method - gives loading error)
export const NOTIFY_GIVES_LOAD_ERROR = {
title : "Gives Load Error" ,
message : "Got an error loading your gives." ,
} ;
// Used in: ContactsView.vue (toggleShowContactAmounts method - setting save error)
export const NOTIFY_CONTACT_SETTING_SAVE_ERROR = {
title : "Setting Save Error" ,
message :
"The setting may not have saved. Try again, maybe after restarting the app." ,
} ;
// Used in: ContactsView.vue (showOnboardMeetingDialog method - meeting status error)
export const NOTIFY_MEETING_STATUS_ERROR = {
title : "Meeting Error" ,
message : "There was an error checking your meeting status." ,
} ;
// Used in: ContactsView.vue (addContact method - contact added with visibility)
export const NOTIFY_CONTACTS_ADDED_VISIBLE = {
title : "Contact Added" ,
message : "They were added, and your activity is visible to them." ,
} ;
// Used in: ContactsView.vue (addContact method - contact added without visibility)
export const NOTIFY_CONTACTS_ADDED = {
title : "Contact Added" ,
message : "They were added." ,
} ;
// Used in: ContactsView.vue (showCopySelectionsInfo method - info about copying contacts)
export const NOTIFY_CONTACT_INFO_COPY = {
title : "Info" ,
message : "Contact info will include name, ID, profile image, and public key." ,
} ;
// Used in: ContactsView.vue (copySelectedContacts method - no contacts selected error)
export const NOTIFY_CONTACTS_SELECT_TO_COPY = {
title : "Select Contacts" ,
message : "You must select contacts to copy." ,
} ;
// Used in: ContactsView.vue (copySelectedContacts method - contact link copied success)
export const NOTIFY_CONTACT_LINK_COPIED = {
title : "Copied" ,
message : "contact link" ,
} ;
// Template for registration success message
// Used in: ContactsView.vue (register method - registration success with contact name)
export const getRegisterPersonSuccessMessage = ( name? : string ) : string = >
` ${ name || "That unnamed person" } ${ NOTIFY_REGISTER_PERSON_SUCCESS . message } ` ;
// Template for visibility success message
// Used in: ContactsView.vue (setVisibility method - visibility success with contact name)
export const getVisibilitySuccessMessage = (
name? : string ,
visible = true ,
) : string = >
` ${ name || "That user" } can ${ visible ? "" : "not " } see your activity. ` ;
// Template for gives retrieval error message
// Used in: ContactsView.vue (loadGives method - gives retrieval error with direction)
export const getGivesRetrievalErrorMessage = ( useRecipient : boolean ) : string = >
` Got an error retrieving your ${ useRecipient ? "given" : "received" } data from the server. ` ;
// Additional constants for ContactsView.vue
// Used in: ContactsView.vue (register method - registration error fallback)
export const NOTIFY_REGISTRATION_ERROR_FALLBACK = {
title : "Registration Error" ,
message : "Something went wrong during registration." ,
} ;
// Used in: ContactsView.vue (register method - generic registration error)
export const NOTIFY_REGISTRATION_ERROR_GENERIC = {
title : "Registration Error" ,
message : "There was an error." ,
} ;
// Used in: ContactsView.vue (setVisibility method - visibility error fallback)
export const NOTIFY_VISIBILITY_ERROR_FALLBACK = {
title : "Error Setting Visibility" ,
message : "Could not set visibility on the server." ,
} ;
// ContactEditView.vue constants
// Used in: ContactEditView.vue (contact not found error)
export const NOTIFY_CONTACT_NOT_FOUND = {
title : "Contact Not Found" ,
message : "Contact not found with DID" ,
} ;
// Used in: ContactEditView.vue (contact methods updated)
export const NOTIFY_CONTACT_METHODS_UPDATED = {
title : "Contact Methods Updated" ,
message :
"Contact methods updated. Note that some methods have been updated, such as uppercasing 'email' to 'EMAIL'. Save again if the changes are acceptable." ,
} ;
// Used in: ContactEditView.vue (contact saved successfully)
export const NOTIFY_CONTACT_SAVED = {
title : "Contact Saved" ,
message : "Contact saved successfully" ,
} ;
// Dynamic message template for contact not found (used in ContactEditView.vue)
// Used in: ContactEditView.vue (contact not found with DID)
export const createContactNotFoundMessage = ( did : string ) : string = >
` ${ NOTIFY_CONTACT_NOT_FOUND . message } ${ did } ` ;
// ContactAmountsView.vue constants
// Used in: ContactAmountsView.vue (settings retrieval error)
export const NOTIFY_SETTINGS_RETRIEVAL_ERROR = {
title : "Error" ,
message : "There was an error retrieving your settings or contacts or gives." ,
} ;
// Used in: ContactAmountsView.vue (server retrieval error)
export const NOTIFY_SERVER_RETRIEVAL_ERROR = {
title : "Error With Server" ,
message : "Got an error retrieving your given time from the server." ,
} ;
// Used in: ContactAmountsView.vue (confirmation restriction)
export const NOTIFY_CONFIRMATION_RESTRICTION = {
title : "Not Allowed" ,
message : "Only the recipient can confirm final receipt." ,