@dev.smartpricing/message-composer-layer 4.3.2-fix.1 → 4.5.1-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +228 -46
  2. package/app/api/brands.ts +20 -13
  3. package/app/api/client.ts +15 -6
  4. package/app/api/compilation.ts +13 -3
  5. package/app/api/dynamicValues.ts +6 -2
  6. package/app/api/media.ts +6 -3
  7. package/app/api/messageGroups.ts +29 -14
  8. package/app/api/meta.ts +26 -4
  9. package/app/api/organization.ts +10 -1
  10. package/app/api/tracking.ts +2 -2
  11. package/app/components/Common/AppContextErrors.vue +30 -0
  12. package/app/components/Common/HtmlPreviewIframe.vue +17 -3
  13. package/app/components/Common/MessageGroupSelect.vue +164 -26
  14. package/app/components/Common/MessagePreviewSlideover.vue +3 -0
  15. package/app/components/Common/OrganizationGate.vue +51 -0
  16. package/app/components/Common/OrganizationSelect.vue +27 -0
  17. package/app/components/Common/WhatsappNotConfigured.vue +20 -0
  18. package/app/components/Composer/EmailComposer.vue +4 -0
  19. package/app/components/Composer/MessageLibrary.vue +17 -7
  20. package/app/components/Composer/WabaSelectModal.vue +75 -0
  21. package/app/components/Composer/WhatsappComposer.vue +78 -3
  22. package/app/components/MessageSendFlow/EmailPreview.vue +81 -0
  23. package/app/components/MessageSendFlow/LanguageSelect.vue +39 -0
  24. package/app/components/MessageSendFlow/MessageSendFlow.vue +265 -0
  25. package/app/components/MessageSendFlow/ParametersForm.vue +51 -0
  26. package/app/components/TemplateList/BaseTable.vue +156 -108
  27. package/app/components/Whatsapp/Preview.vue +12 -4
  28. package/app/components/Whatsapp/PreviewPanel.vue +7 -1
  29. package/app/composables/composerContext.ts +9 -7
  30. package/app/composables/useEffectiveOrganization.ts +34 -0
  31. package/app/composables/useMessageGroupList.ts +186 -0
  32. package/app/composables/useMessageGroupWaba.ts +73 -0
  33. package/app/composables/useMessageSendFlow.ts +284 -0
  34. package/app/composables/usePagedMessageGroups.ts +78 -0
  35. package/app/composables/useTemplateOperations.ts +23 -4
  36. package/app/composables/useTracking.ts +14 -5
  37. package/app/composables/useWhatsappConfiguration.ts +32 -0
  38. package/app/layouts/default.vue +5 -1
  39. package/app/pages/brands.vue +1 -0
  40. package/app/pages/images.vue +4 -0
  41. package/app/pages/index.vue +1 -0
  42. package/app/pages/preview/[id].vue +2 -0
  43. package/app/pages/template/whatsapp/[id].vue +1 -0
  44. package/app/queries/brands.ts +27 -7
  45. package/app/queries/compilation.ts +16 -3
  46. package/app/queries/dynamicValues.ts +19 -2
  47. package/app/queries/media.ts +8 -3
  48. package/app/queries/messageGroups.ts +56 -17
  49. package/app/queries/meta.ts +13 -8
  50. package/app/stores/appContext.ts +18 -48
  51. package/app/stores/effectiveOrganization.ts +128 -0
  52. package/app/stores/emailEditor.ts +5 -1
  53. package/app/stores/metaSubmission.ts +7 -17
  54. package/app/types/tracking.ts +17 -0
  55. package/app/utils/testIds.const.ts +29 -0
  56. package/i18n/locales/de.ts +84 -2
  57. package/i18n/locales/en.ts +80 -2
  58. package/i18n/locales/es.ts +81 -2
  59. package/i18n/locales/fr.ts +81 -2
  60. package/i18n/locales/it.ts +82 -2
  61. package/package.json +2 -2
@@ -18,6 +18,7 @@ export default {
18
18
  all: 'Tous',
19
19
  copy: 'Copier',
20
20
  copy_of: 'Copie de {name}',
21
+ context_error_title: 'Erreur de configuration du composer',
21
22
  desktop: 'Bureau',
22
23
  error: 'Erreur',
23
24
  errore: 'Erreur',
@@ -50,16 +51,38 @@ export default {
50
51
  },
51
52
  internal: 'Interne',
52
53
  mobile: 'Mobile',
54
+ organization: {
55
+ label: 'Organisation',
56
+ lookup_failed_description:
57
+ "Une erreur s'est produite lors du chargement des organisations auxquelles vous avez accès. Réessayez.",
58
+ lookup_failed_title: 'Impossible de charger vos organisations',
59
+ none_description: "Votre utilisateur n'a accès à aucune organisation.",
60
+ none_title: 'Aucune organisation disponible',
61
+ resolving: 'Chargement de vos organisations...',
62
+ retry: 'Réessayer',
63
+ search_placeholder: 'Rechercher des organisations...',
64
+ },
53
65
  preview: 'Aperçu',
54
66
  search: 'Rechercher...',
55
67
  success: 'Succès',
56
68
  translation_failed: 'Échec de la traduction',
57
69
  messageGroupSelect: {
58
70
  inactive_tooltip: 'Ce groupe de messages contient des messages non approuvés ou manquants',
71
+ not_sendable_tooltip: 'Ce groupe de messages ne contient aucun message approuvé',
59
72
  hide_inactive: 'Masquer inactifs',
73
+ hide_not_sendable: 'Masquer non envoyables',
74
+ load_more: 'Charger plus',
60
75
  },
61
76
  view_less: 'Afficher moins',
62
77
  view_more: 'Afficher plus',
78
+ whatsapp_not_configured_description:
79
+ 'Cette organisation n’a pas de compte WhatsApp Business. Les messages WhatsApp peuvent être enregistrés comme brouillons, mais pas soumis pour approbation.',
80
+ whatsapp_not_configured_title: 'WhatsApp n’est pas configuré',
81
+ whatsapp_waba_detached_description:
82
+ 'Il ne peut plus être soumis pour approbation. Dupliquez-le pour soumettre la copie à un autre compte WhatsApp Business.',
83
+ whatsapp_waba_detached_title:
84
+ 'Ce message est sur un compte WhatsApp Business qui n’est plus connecté',
85
+ whatsapp_waba_label: 'Compte WhatsApp Business :',
63
86
  },
64
87
  dialogs: {
65
88
  delete_message: {
@@ -104,6 +127,13 @@ export default {
104
127
  'Envoyer la traduction {language} pour révision ? Vous ne pourrez pas la modifier tant qu’elle est en attente d’approbation.',
105
128
  title: 'Demander une révision',
106
129
  },
130
+ select_waba: {
131
+ confirm: 'Demander l’approbation',
132
+ description:
133
+ 'Cette organisation a plusieurs comptes WhatsApp Business. Choisissez celui auquel ce message est soumis : il ne pourra plus être modifié ensuite.',
134
+ no_numbers: 'Aucun numéro connecté',
135
+ title: 'Choisissez le compte WhatsApp Business',
136
+ },
107
137
  unpublish_message_group: {
108
138
  message: 'Dépublier « {name} » ? Il ne sera plus visible aux clients.',
109
139
  success: '« {name} » a été dépublié.',
@@ -785,20 +815,28 @@ export default {
785
815
  },
786
816
  message_library: {
787
817
  add_message_group: 'Nouveau message',
818
+ all_products: 'Tous les produits',
788
819
  category_placeholder: 'Sélectionner une catégorie',
789
820
  headers: {
790
821
  category: 'Catégorie',
791
822
  name: 'Nom',
792
823
  preview: 'Aperçu',
824
+ product: 'Produit',
793
825
  status: 'Statut',
794
- tags: 'Tags',
795
826
  updated_at: 'Mis à jour le',
796
827
  },
828
+ pagination_summary: '{from}–{to} sur {total}',
829
+ product_placeholder: 'Sélectionner un produit',
797
830
  render_type_placeholder: 'Sélectionner le type de rendu',
798
831
  search_placeholder: 'Rechercher',
799
832
  status_placeholder: 'Sélectionner un statut',
800
- tags_placeholder: 'Filtrer par tags',
801
833
  title: 'Bibliothèque de messages',
834
+ visibility: {
835
+ all: 'Toutes',
836
+ internal: 'Internes',
837
+ public: 'Publiques',
838
+ },
839
+ visibility_placeholder: 'Sélectionner la visibilité',
802
840
  },
803
841
  whatsapp: {
804
842
  create_message_group: {
@@ -831,6 +869,12 @@ export default {
831
869
  },
832
870
  },
833
871
  },
872
+ products: {
873
+ chat: 'Smartchat',
874
+ connect: 'Smartconnect',
875
+ pms: 'Smartpms',
876
+ pricing: 'Smartpricing',
877
+ },
834
878
  public: {
835
879
  select_message: {
836
880
  choose_language: 'Choisir une langue...',
@@ -840,6 +884,41 @@ export default {
840
884
  send_message: 'Envoyer le message',
841
885
  },
842
886
  },
887
+ send_flow: {
888
+ actions: {
889
+ back: 'Retour',
890
+ cancel: 'Annuler',
891
+ confirm: 'Confirmer',
892
+ next: 'Suivant',
893
+ },
894
+ errors: {
895
+ COMPILE_FAILED: 'Le message n’a pas pu être préparé. Veuillez réessayer.',
896
+ MISSING_PARAMETERS: 'Renseignez tous les paramètres avant de confirmer.',
897
+ NOT_OFFERED:
898
+ '« {name} » ne peut pas être envoyé d’ici. Choisissez un autre groupe de messages.',
899
+ NOT_SENDABLE:
900
+ '« {name} » n’a aucun message approuvé et ne peut pas être envoyé. Choisissez un autre groupe de messages.',
901
+ TEMPLATE_NOT_APPROVED: 'Ce message n’a pas été approuvé par Meta et ne peut pas être envoyé.',
902
+ TEMPLATE_NOT_SUBMITTED: 'Ce message n’a pas été soumis à Meta et ne peut pas être envoyé.',
903
+ },
904
+ language: {
905
+ approved: 'Approuvé',
906
+ approved_count: 'Langues approuvées pour {name} : {count}',
907
+ not_sendable: 'Non envoyable ({status})',
908
+ },
909
+ no_parameters: 'Ce message n’a aucun paramètre à renseigner.',
910
+ not_sendable_hint: 'Les groupes de messages grisés n’ont aucun message approuvé.',
911
+ questions: {
912
+ language: 'Dans quelle langue ?',
913
+ message: 'Quel message voulez-vous envoyer ?',
914
+ parameters: 'Renseignez les paramètres',
915
+ preview: 'Voici ce que le client recevra',
916
+ },
917
+ steps: {
918
+ message: { description: 'Choisissez un groupe de messages envoyable', title: 'Message' },
919
+ parameters: { description: 'Remplissez les champs', title: 'Paramètres' },
920
+ },
921
+ },
843
922
  status: {
844
923
  approved: 'Approuvé',
845
924
  draft: 'Brouillon',
@@ -18,6 +18,7 @@ export default {
18
18
  all: 'Tutti',
19
19
  copy: 'Copia',
20
20
  copy_of: 'Copia di {name}',
21
+ context_error_title: 'Errore di configurazione del composer',
21
22
  desktop: 'Desktop',
22
23
  error: 'Errore',
23
24
  errore: 'Errore',
@@ -49,16 +50,38 @@ export default {
49
50
  },
50
51
  internal: 'Interno',
51
52
  mobile: 'Mobile',
53
+ organization: {
54
+ label: 'Organizzazione',
55
+ lookup_failed_description:
56
+ 'Si è verificato un errore durante il caricamento delle organizzazioni a cui hai accesso. Riprova.',
57
+ lookup_failed_title: 'Impossibile caricare le tue organizzazioni',
58
+ none_description: 'Il tuo utente non ha accesso a nessuna organizzazione.',
59
+ none_title: 'Nessuna organizzazione disponibile',
60
+ resolving: 'Caricamento delle tue organizzazioni...',
61
+ retry: 'Riprova',
62
+ search_placeholder: 'Cerca organizzazioni...',
63
+ },
52
64
  preview: 'Anteprima',
53
65
  search: 'Cerca...',
54
66
  success: 'Successo',
55
67
  translation_failed: 'Traduzione non riuscita',
56
68
  messageGroupSelect: {
57
69
  inactive_tooltip: 'Questo gruppo di messaggi contiene messaggi non approvati o mancanti',
70
+ not_sendable_tooltip: 'Questo gruppo di messaggi non contiene messaggi approvati',
58
71
  hide_inactive: 'Nascondi inattivi',
72
+ hide_not_sendable: 'Nascondi non inviabili',
73
+ load_more: 'Carica altri',
59
74
  },
60
75
  view_less: 'Mostra meno',
61
76
  view_more: 'Mostra di più',
77
+ whatsapp_not_configured_description:
78
+ 'Questa organizzazione non ha un account WhatsApp Business. I messaggi WhatsApp possono essere salvati come bozze, ma non inviati per l’approvazione.',
79
+ whatsapp_not_configured_title: 'WhatsApp non è configurato',
80
+ whatsapp_waba_detached_description:
81
+ 'Non può più essere inviato per l’approvazione. Duplicalo per inviare la copia a un altro account WhatsApp Business.',
82
+ whatsapp_waba_detached_title:
83
+ 'Questo messaggio è su un account WhatsApp Business che non è più collegato',
84
+ whatsapp_waba_label: 'Account WhatsApp Business:',
62
85
  },
63
86
  dialogs: {
64
87
  delete_message: {
@@ -103,6 +126,13 @@ export default {
103
126
  'Inviare per la revisione la traduzione in {language}? Non potrai modificarla finché è in attesa di approvazione.',
104
127
  title: 'Richiedi revisione',
105
128
  },
129
+ select_waba: {
130
+ confirm: 'Richiedi approvazione',
131
+ description:
132
+ 'Questa organizzazione ha più di un account WhatsApp Business. Scegli quello a cui inviare questo messaggio: non potrà essere cambiato in seguito.',
133
+ no_numbers: 'Nessun numero collegato',
134
+ title: 'Scegli l’account WhatsApp Business',
135
+ },
106
136
  unpublish_message_group: {
107
137
  message: 'Annullare la pubblicazione di "{name}"? Non sarà più visibile ai clienti.',
108
138
  success: 'La pubblicazione di "{name}" è stata annullata.',
@@ -778,20 +808,28 @@ export default {
778
808
  },
779
809
  message_library: {
780
810
  add_message_group: 'Nuovo messaggio',
811
+ all_products: 'Tutti i prodotti',
781
812
  category_placeholder: 'Seleziona categoria',
782
813
  headers: {
783
814
  category: 'Categoria',
784
815
  name: 'Nome',
785
816
  preview: 'Anteprima',
817
+ product: 'Prodotto',
786
818
  status: 'Stato',
787
- tags: 'Tag',
788
819
  updated_at: 'Aggiornato il',
789
820
  },
821
+ pagination_summary: '{from}–{to} di {total}',
822
+ product_placeholder: 'Seleziona prodotto',
790
823
  render_type_placeholder: 'Seleziona tipo di rendering',
791
824
  search_placeholder: 'Cerca',
792
825
  status_placeholder: 'Seleziona stato',
793
- tags_placeholder: 'Filtra per tag',
794
826
  title: 'Libreria messaggi',
827
+ visibility: {
828
+ all: 'Tutte',
829
+ internal: 'Interne',
830
+ public: 'Pubbliche',
831
+ },
832
+ visibility_placeholder: 'Seleziona visibilità',
795
833
  },
796
834
  whatsapp: {
797
835
  create_message_group: {
@@ -824,6 +862,12 @@ export default {
824
862
  },
825
863
  },
826
864
  },
865
+ products: {
866
+ chat: 'Smartchat',
867
+ connect: 'Smartconnect',
868
+ pms: 'Smartpms',
869
+ pricing: 'Smartpricing',
870
+ },
827
871
  public: {
828
872
  select_message: {
829
873
  choose_language: 'Scegli una lingua...',
@@ -833,6 +877,42 @@ export default {
833
877
  send_message: 'Invia messaggio',
834
878
  },
835
879
  },
880
+ send_flow: {
881
+ actions: {
882
+ back: 'Indietro',
883
+ cancel: 'Annulla',
884
+ confirm: 'Conferma',
885
+ next: 'Avanti',
886
+ },
887
+ errors: {
888
+ COMPILE_FAILED: 'Non è stato possibile preparare il messaggio. Riprova.',
889
+ MISSING_PARAMETERS: 'Compila tutti i parametri prima di confermare.',
890
+ NOT_OFFERED: '"{name}" non può essere inviato da qui. Scegli un altro gruppo di messaggi.',
891
+ NOT_SENDABLE:
892
+ '"{name}" non ha nessun messaggio approvato e non può essere inviato. Scegli un altro gruppo di messaggi.',
893
+ TEMPLATE_NOT_APPROVED:
894
+ 'Questo messaggio non è stato approvato da Meta e non può essere inviato.',
895
+ TEMPLATE_NOT_SUBMITTED:
896
+ 'Questo messaggio non è stato sottoposto a Meta e non può essere inviato.',
897
+ },
898
+ language: {
899
+ approved: 'Approvato',
900
+ approved_count: 'Lingue approvate per {name}: {count}',
901
+ not_sendable: 'Non inviabile ({status})',
902
+ },
903
+ no_parameters: 'Questo messaggio non ha parametri da compilare.',
904
+ not_sendable_hint: 'I gruppi di messaggi in grigio non hanno nessun messaggio approvato.',
905
+ questions: {
906
+ language: 'In quale lingua?',
907
+ message: 'Quale messaggio vuoi inviare?',
908
+ parameters: 'Compila i parametri',
909
+ preview: 'Ecco cosa riceverà l’ospite',
910
+ },
911
+ steps: {
912
+ message: { description: 'Scegli un gruppo di messaggi inviabile', title: 'Messaggio' },
913
+ parameters: { description: 'Compila i campi', title: 'Parametri' },
914
+ },
915
+ },
836
916
  status: {
837
917
  approved: 'Approvato',
838
918
  draft: 'Bozza',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dev.smartpricing/message-composer-layer",
3
- "version": "4.3.2-fix.1",
3
+ "version": "4.5.1-next.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./nuxt.config.ts",
@@ -35,7 +35,7 @@
35
35
  "vue-router": "^5.0.7",
36
36
  "vue3-emoji-picker": "^1.1.8",
37
37
  "zod": "^4.4.3",
38
- "@dev.smartpricing/message-composer-utils": "4.3.2-fix.1"
38
+ "@dev.smartpricing/message-composer-utils": "4.5.1-next.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@dev.smartpricing/platform-layer": "^0.0.23",