forked from trent_larson/crowd-funder-for-time-pwa
Refactor notification usage and apply TypeScript/lint improvements
- Replaced direct $notify calls with notification helper utilities for consistency and reduced duplication. - Updated AccountViewView.vue, PlatformServiceMixin.ts, and ShareMyContactInfoView.vue to use notification helpers. - Added explicit TypeScript types and constants for notification patterns. - Suppressed ESLint 'any' warning in notification mixin helper. - Ensured all affected files pass linting.
This commit is contained in:
128
src/constants/accountView.ts
Normal file
128
src/constants/accountView.ts
Normal file
@@ -0,0 +1,128 @@
|
||||
/**
|
||||
* Constants for AccountViewView component
|
||||
* Centralizes magic strings and provides type safety
|
||||
*/
|
||||
|
||||
export const ACCOUNT_VIEW_CONSTANTS = {
|
||||
// Error messages
|
||||
ERRORS: {
|
||||
PROFILE_NOT_AVAILABLE: "Your server profile is not available.",
|
||||
PROFILE_LOAD_ERROR:
|
||||
"See the Help page about errors with your personal data.",
|
||||
BROWSER_NOTIFICATIONS_UNSUPPORTED:
|
||||
"This browser does not support notifications. Use Chrome, or install this to the home screen, or try other suggestions on the 'Troubleshoot your notifications' page.",
|
||||
IMAGE_DELETE_PROBLEM:
|
||||
"There was a problem deleting the image. Contact support if you want it removed from the servers.",
|
||||
IMAGE_DELETE_ERROR: "There was an error deleting the image.",
|
||||
SETTINGS_UPDATE_ERROR:
|
||||
"Unable to update your settings. Check claim limits again.",
|
||||
IMPORT_ERROR: "There was an error reading that Dexie file.",
|
||||
EXPORT_ERROR: "There was an error exporting the data.",
|
||||
PROFILE_SAVE_ERROR: "There was an error saving your profile.",
|
||||
PROFILE_DELETE_ERROR: "There was an error deleting your profile.",
|
||||
PROFILE_NOT_SAVED: "Profile not saved",
|
||||
PROFILE_NOT_DELETED: "Profile not deleted",
|
||||
UNABLE_TO_LOAD_PROFILE: "Unable to load profile.",
|
||||
},
|
||||
|
||||
// Success messages
|
||||
SUCCESS: {
|
||||
PROFILE_SAVED: "Your profile has been updated successfully.",
|
||||
PROFILE_DELETED: "Your profile has been deleted successfully.",
|
||||
IMPORT_COMPLETE: "Import Complete",
|
||||
PROFILE_DELETED_SILENT: "Your profile has been deleted successfully.",
|
||||
},
|
||||
|
||||
// Info messages
|
||||
INFO: {
|
||||
PROFILE_INFO:
|
||||
"This data will be published for all to see, so be careful what your write. Your ID will only be shared with people who you allow to see your activity.",
|
||||
NO_PROFILE_LOCATION: "No profile location is saved.",
|
||||
RELOAD_VAPID:
|
||||
"Now reload the app to get a new VAPID to use with this push server.",
|
||||
},
|
||||
|
||||
// Warning messages
|
||||
WARNINGS: {
|
||||
IMAGE_DELETE_WARNING:
|
||||
"Note that anyone with you already as a contact will no longer see a picture, and you will have to reshare your data with them if you save a new picture. Are you sure you want to delete your profile picture?",
|
||||
ERASE_LOCATION_WARNING:
|
||||
"Are you sure you don't want to mark a location? This will erase the current location.",
|
||||
DELETE_PROFILE_WARNING:
|
||||
"Are you sure you want to delete your public profile? This will remove your description and location from the server, and it cannot be undone.",
|
||||
IMPORT_REPLACE_WARNING:
|
||||
"This will replace all settings and contacts, so we recommend you first do the backup step above. Are you sure you want to import and replace all contacts and settings?",
|
||||
},
|
||||
|
||||
// Notification messages
|
||||
NOTIFICATIONS: {
|
||||
NEW_ACTIVITY_INFO: `
|
||||
This will only notify you when there is new relevant activity for you personally.
|
||||
Note that it runs on your device and many factors may affect delivery,
|
||||
so if you want a reliable but simple daily notification then choose a 'Reminder'.
|
||||
Do you want more details?
|
||||
`,
|
||||
REMINDER_INFO: `
|
||||
This will notify you at a specific time each day.
|
||||
Note that it does not give you personalized notifications,
|
||||
so if you want less reliable but personalized notification then choose a 'New Activity' Notification.
|
||||
Do you want more details?
|
||||
`,
|
||||
},
|
||||
|
||||
// UI text
|
||||
UI: {
|
||||
COPIED: "Copied",
|
||||
SENT: "Sent...",
|
||||
RECORDING_GIVE: "Recording the give...",
|
||||
RECORDING_OFFER: "Recording the offer...",
|
||||
},
|
||||
|
||||
// Limits messages
|
||||
LIMITS: {
|
||||
NO_IDENTIFIER: "You have no identifier, or your data has been corrupted.",
|
||||
NO_LIMITS_FOUND: "No limits were found, so no actions are allowed.",
|
||||
NO_IMAGE_ACCESS: "You don't have access to upload images.",
|
||||
CANNOT_UPLOAD_IMAGES: "You cannot upload images.",
|
||||
BAD_SERVER_RESPONSE: "Bad server response.",
|
||||
ERROR_RETRIEVING_LIMITS: "Got an error retrieving limits.",
|
||||
},
|
||||
|
||||
// Project assignment errors
|
||||
PROJECT_ERRORS: {
|
||||
MISSING_PROJECT:
|
||||
"To assign to a project, you must open this page through a project.",
|
||||
CONFLICT_RECIPIENT:
|
||||
"You cannot assign both to a project and to a recipient.",
|
||||
MISSING_RECIPIENT:
|
||||
"To assign to a recipient, you must open this page from a contact.",
|
||||
CONFLICT_PROJECT: "You cannot assign both to a recipient and to a project.",
|
||||
},
|
||||
|
||||
// Giver/Recipient errors
|
||||
GIVER_RECIPIENT_ERRORS: {
|
||||
MISSING_GIVER: "To assign a giver, you must open this page from a contact.",
|
||||
CONFLICT_PROJECT_GIVER: "You cannot assign both a giver and a project.",
|
||||
MISSING_RECIPIENT_GIFT:
|
||||
"To assign to a recipient, you must open this page from a contact.",
|
||||
CONFLICT_PROJECT_RECIPIENT:
|
||||
"You cannot assign both to a recipient and to a project.",
|
||||
MISSING_PROVIDER_PROJECT:
|
||||
"To select a project as a provider, you must open this page through a project.",
|
||||
CONFLICT_GIVING_PROJECT:
|
||||
"You cannot select both a giving project and person.",
|
||||
MISSING_FULFILLS_PROJECT:
|
||||
"To assign to a project, you must open this page through a project.",
|
||||
CONFLICT_FULFILLS_PROJECT:
|
||||
"You cannot assign both to a project and to a recipient.",
|
||||
},
|
||||
} as const;
|
||||
|
||||
// Type for accessing constants
|
||||
export type AccountViewConstants = typeof ACCOUNT_VIEW_CONSTANTS;
|
||||
|
||||
// Helper type for error messages
|
||||
export type ErrorMessageKey = keyof typeof ACCOUNT_VIEW_CONSTANTS.ERRORS;
|
||||
export type SuccessMessageKey = keyof typeof ACCOUNT_VIEW_CONSTANTS.SUCCESS;
|
||||
export type InfoMessageKey = keyof typeof ACCOUNT_VIEW_CONSTANTS.INFO;
|
||||
export type WarningMessageKey = keyof typeof ACCOUNT_VIEW_CONSTANTS.WARNINGS;
|
||||
Reference in New Issue
Block a user