feat(sync): nom par defaut neutre (data.json), et plus de clavier pendant une synchro
Un fichier nomme "vault-sync.json" annonce un coffre a qui parcourt la liste des depots ; le contenu est chiffre, le nom ne l'etait pas. Les configurations existantes gardent leur nom - c'est l'URL complete qui est enregistree - et le QR du poste ne raccourcit plus que le nom par defaut courant, sinon le telephone rallongerait vers un autre fichier. Synchroniser coffre ferme ouvre d'abord le coffre : ce chemin depliait le clavier de recherche au milieu d'une synchro. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+10
-3
@@ -92,21 +92,28 @@ function syncIsGitea(url) {
|
||||
|
||||
// ADRESSE DU DEPOT TELLE QUE LE NAVIGATEUR (OU "git clone") LA DONNE.
|
||||
// https://github.com/O/R(.git) -> API de GitHub ; https://hote/O/R(.git) -> API
|
||||
// de Gitea. Fichier par defaut vault-sync.json, ou celui d'un lien .../blob/B/F
|
||||
// de Gitea. Fichier par defaut SYNC_DEFAULT_FILE, ou celui d'un lien .../blob/B/F
|
||||
// (GitHub) ou .../src/branch/B/F (Gitea). Tout le reste passe tel quel - une
|
||||
// URL WebDAV, une URL d'API deja complete. GARDE : un dernier segment qui a
|
||||
// l'air d'un fichier (.json...) n'est pas un depot - sinon
|
||||
// https://serveur/webdav/vault.json deviendrait une API Gitea imaginaire.
|
||||
// LE NOM NE DIT PAS CE QUE C'EST. Un fichier appele "vault-sync.json" dans un
|
||||
// depot annonce un coffre a qui parcourt la liste des depots ; le contenu est
|
||||
// chiffre, mais le nom, lui, designe la cible. Les anciennes configurations
|
||||
// gardent leur nom : c'est l'URL complete qui est enregistree, et elle ne
|
||||
// passe pas par ici.
|
||||
const SYNC_DEFAULT_FILE = 'data.json';
|
||||
|
||||
function syncNormalizeRepoUrl(u) {
|
||||
u = (u || '').replace(/\s+/g, '');
|
||||
if (!u || syncIsGitea(u)) return u;
|
||||
const g = u.match(/^https?:\/\/(www\.)?github\.com\/([^\/]+)\/([^\/]+?)(?:\.git)?(?:\/blob\/[^\/]+\/(.+?))?\/?$/i);
|
||||
if (g) return 'https://api.github.com/repos/' + g[2] + '/' + g[3] +
|
||||
'/contents/' + (g[4] || 'vault-sync.json');
|
||||
'/contents/' + (g[4] || SYNC_DEFAULT_FILE);
|
||||
const m = u.match(/^(https?:\/\/[^\/]+)\/([^\/]+)\/([^\/]+?)(\.git)?(?:\/src\/branch\/[^\/]+\/(.+?))?\/?$/i);
|
||||
if (!m) return u;
|
||||
if (!m[4] && !m[5] && /\.[a-z0-9]{2,5}$/i.test(m[3])) return u; // un fichier, pas un depot
|
||||
return m[1] + '/api/v1/repos/' + m[2] + '/' + m[3] + '/contents/' + (m[5] || 'vault-sync.json');
|
||||
return m[1] + '/api/v1/repos/' + m[2] + '/' + m[3] + '/contents/' + (m[5] || SYNC_DEFAULT_FILE);
|
||||
}
|
||||
|
||||
// UN DEPOT PUBLIC EST REFUSE. Chaque synchro est un commit : l'historique garde
|
||||
|
||||
Reference in New Issue
Block a user