PageSourceSearch

https://creaconnect.world/src/omnis-etat.js

js creaconnect.world collected 2026-09-24 10:08:46 UTC 6,331 bytes, 148 lines download raw bytes

1// L'ÉTAT QUE LA COUCHE D'OMNIS ATTEND DE SON HÔTE.
2//
3// `stabilization.js` (dépôt Omnis.web) utilise 66 champs de `STATE`. Sept
4// existent déjà dans CREA — `previewTabs`, `previewActiveTabId`,
5// `rbSearchEngine`… — parce que les deux navigateurs sont le même et que CREA
6// en est la souche. Les autres viennent de ce qu'OMNIS a construit depuis.
7//
8// POURQUOI CE FICHIER EXISTE. Sans ces champs, la couche lit `undefined`
9// partout. Elle est écrite pour s'en protéger — `STATE.x || []`, `?.`,
10// `!== true` — donc elle ne tombe pas : elle n'affiche simplement rien. Un
11// panneau vide, une liste vide, un réglage qui paraît désactivé. Aucune erreur
12// nulle part, et l'impression que le transfert a échoué alors qu'il ne lui
13// manquait qu'une valeur de départ.
14//
15// ─────────────────────────────────────────────────
16// DEUX RÈGLES, ET ELLES COMPTENT
17//
18// 1. ON N'ÉCRASE JAMAIS. `??=` et non `=` : si CREA a déjà une valeur, ou si
19//    une session précédente en a enregistré une, elle gagne. Poser une valeur
20//    par défaut sur un état déjà vécu effacerait ce que quelqu'un a réglé.
21//
22// 2. ON NE POSE QUE CE QUI EST SANS AMBIGUÏTÉ. Les champs structurés —
23//    `omnisProfile`, `omnisWeather`, `omnisNewTabCustomization`,
24//    `omnisAccueilVerset`, `omnisMetaBudget` — ne sont PAS dans cette liste,
25//    volontairement. La couche les construit elle-même, avec leur forme
26//    complète :
27//
28//      if (!STATE.omnisProfile) STATE.omnisProfile = { displayName: '', ... }
29//
30//    Leur poser `{}` ici serait pire que de ne rien faire : `{}` est vrai,
31//    donc ce `if` ne s'exécuterait plus jamais, et le champ resterait vide à
32//    la place d'être rempli. Une valeur par défaut mal placée est plus nuisible
33//    qu'une valeur absente.
34//
35// Les valeurs ci-dessous ne sont pas choisies : elles sont relevées dans
36// stabilization.js, à l'endroit où la couche écrit dans chaque champ.
37//
38// ─────────────────────────────────────────────────
39// SCRIPT CLASSIQUE, ET C'EST OBLIGATOIRE
40//
41// Un module ES se charge en différé : il s'exécuterait APRÈS la couche, donc
42// trop tard pour lui poser son état — et la couche afficherait des panneaux
43// vides sans qu'aucune erreur ne le dise. Ce fichier suit donc la règle du
44// reste du chargement de CREA : script classique, chargé après le tronc, avant
45// la couche.
46
47// Drapeaux de travail en cours. Faux au repos, vrai le temps d'une requête.
48const DRAPEAUX = [
49  '_omnisAssistantModelsLoading',
50  '_omnisMetaLoading',
51  'omnisAssistantBusy',
52  'omnisAssistantOpen',
53  'omnisCreaOpen',
54  'omnisCustomizeOpen',
55  'omnisSerpIaEnCours',
56  'omnisSpeaking',
57  'omnisShowCrashRecoveryBanner',
58]
59
60// Réglages, tous à « non » par défaut. AUCUN CONSENTEMENT N'EST PRÉSUMÉ :
61// indexer les pages visitées et personnaliser la recherche sont des accords
62// explicites, et un défaut à vrai reviendrait à les accorder pour quelqu'un.
63const REGLAGES_DESACTIVES = [
64  'omnisIncognito',
65  'omnisIndexVisitedPages',
66  'omnisParentalControlEnabled',
67  'omnisOnboardingComplete',
68  'rbEngineChoiceSeen',
69]
70
71// Listes. Vides, jamais nulles : la couche les parcourt sans toujours vérifier.
72const LISTES = [
73  'omnisAssistantThread',
74  'omnisDownloadHistory',
75  'omnisOtherDeviceTabs',
76  'rbCustomSearchEngines',
77]
78
79// OU JOINDRE LE SERVEUR D OMNIS.
80//
81// La couche fait quarante appels vers /api/... en relatif. Sur ses propres
82// surfaces c est juste. Ici, ces appels frappaient le serveur de CREA, qui a
83// ses propres routes sous les memes chemins : /api/search y repondait 401 et
84// /api/weather 400. C est pour cela que la recherche ne se lancait pas et que
85// la meteo ne s affichait pas — les appels partaient, et arrivaient au mauvais
86// endroit.
87//
88// Le serveur d OMNIS accepte les autres origines depuis le 3 septembre 2026,
89// sur les seules routes deja publiques et sans jamais autoriser les cookies.
90//
91// Modifiable : localStorage.setItem("omnis.api.base", "http://127.0.0.1:4177")
92// pointe la couche sur un OMNIS local, ce qui evite de dependre de la
93// production pour essayer une correction.
94const OMNIS_API_PAR_DEFAUT = 'https://web.omnisconnect.world'
95try {
96  window.OMNIS_API_BASE = localStorage.getItem('omnis.api.base') || OMNIS_API_PAR_DEFAUT
97} catch (erreur) {
98  window.OMNIS_API_BASE = OMNIS_API_PAR_DEFAUT
99}
100
101function poserEtatOmnis(STATE) {
102  if (!STATE || typeof STATE !== 'object') return null
103  const poses = []
104  const poser = (champ, valeur) => {
105    if (STATE[champ] !== undefined && STATE[champ] !== null) return
106    STATE[champ] = valeur
107    poses.push(champ)
108  }
109
110  for (const champ of DRAPEAUX) poser(champ, false)
111  for (const champ of REGLAGES_DESACTIVES) poser(champ, false)
112  for (const champ of LISTES) poser(champ, [])
113
114  poser('omnisAssistantDraft', '')
115  poser('omnisCreaEmbedUrl', '')
116  poser('omnisOnboardingStep', 0)
117  // Cinq minutes : la valeur de repli qu'écrit la couche elle-même quand le
118  // réglage rend un nombre invalide (`Number(...) || 5`).
119  poser('omnisMemorySaverMinutes', 5)
120  poser('omnisAssistantConfigured', false)
121
122  return { poses }
123}
124
125// LES CHAMPS QU'ON LAISSE VOLONTAIREMENT INTACTS.
126//
127// Exportés pour que ce choix soit vérifiable, et pour qu'un test puisse
128// s'assurer qu'ils ne sont jamais posés ici. Chacun est construit par la couche
129// avec une forme complète ; y poser une valeur vide condamnerait cette
130// construction (voir la règle 2 en tête de fichier).
131const CONSTRUITS_PAR_LA_COUCHE = [
132  'omnisProfile',
133  'omnisWeather',
134  'omnisNewTabCustomization',
135  'omnisAccueilVerset',
136  'omnisMetaBudget',
137  'omnisAssistantEmbed',
138  '_rbAltShot_preview',
139  // Engendré par uid() au premier besoin. Le poser à vide donnerait un
140  // identifiant d'appareil constant entre toutes les installations, et le
141  // service rangerait les onglets de tout le monde au même endroit.
142  'omnisDeviceId',
143]
144
145// Exposés pour l'installateur de la couche, et pour les tests. Le reste du
146// chargement de CREA procède de la même façon.
147window.poserEtatOmnis = poserEtatOmnis
148window.CONSTRUITS_PAR_LA_COUCHE = CONSTRUITS_PAR_LA_COUCHE

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.