Files
Pena/docs/2-technique/2.2-Commandes-Tauri.md

4.7 KiB

Commandes Tauri

Le backend Rust expose 8 commandes au frontend, enregistrées dans lib.rs via generate_handler![]. Le frontend les appelle avec window.__TAURI__.core.invoke('<nom>', { <args> }).

Cette page sert de référence : signature, arguments, valeur de retour et comportement de chaque commande.

Rendu Markdown

render_markdown

render_markdown(content: String) -> String
  • Args : content — Markdown brut.
  • Retour : HTML.
  • Comportement : rendu via ComrakPreviewRenderer (sans extensions, aperçu rapide).
  • Frontend : services/markdown.js.

convert_file

convert_file(path: String) -> Result<String, String>
  • Args : path — chemin absolu d'un fichier .md.
  • Retour : Ok(html) ou Err(message).
  • Comportement : lit le fichier puis le rend via ComrakRenderer (toutes les extensions activées : tables, strikethrough, autolink, tasklist + coloration syntaxique).
  • Frontend : services/markdown.js. C'est la commande utilisée pour afficher un document dans le lecteur.

get_syntax_highlight_css

get_syntax_highlight_css() -> String
  • Args : aucun.
  • Retour : feuille CSS de coloration syntaxique.
  • Comportement : génère le CSS du thème syntect base16-ocean.dark.

Fichiers

list_md_files

list_md_files(dir: String) -> Result<Vec<String>, String>
  • Args : dir — chemin d'un répertoire.
  • Retour : Ok([chemins…]) (triés alphabétiquement) ou Err(message).
  • Comportement : parcourt le répertoire récursivement, ignore les fichiers/dossiers cachés (commençant par .), ne retient que les .md.
  • Frontend : services/files.js.

Surveillance de fichiers (watch)

Ces commandes sont implémentées et fonctionnelles côté backend, mais l'interface ne les appelle pas encore. Le rechargement automatique n'est donc pas actif. Voir Fonctionnalités.

start_watch

start_watch(path: String) -> Result<(), String>
  • Args : path — fichier ou répertoire à surveiller.
  • Comportement :
    • arrête le watcher précédent (un seul actif à la fois, stocké dans WatcherState) ;
    • surveille en mode récursif si path est un répertoire, non récursif si c'est un fichier ;
    • lance une boucle de débounce de 80 ms qui ne retient que les fichiers .md non cachés, et émet l'événement Tauri file-changed avec un payload { path }.
  • Frontend : services/watcher.js (startWatch).

stop_watch

stop_watch() -> ()
  • Comportement : arrête le watcher actif (le supprime de WatcherState, ce qui termine le thread de surveillance).
  • Frontend : services/watcher.js (stopWatch).

Événement file-changed

  • Émis par le backend pendant la surveillance.
  • Payload : { path: String } — chemin du fichier modifié.
  • Écoutable côté frontend via window.__TAURI__.event.listen('file-changed', callback) (onFileChanged).
  • Consommation : router.js enregistre le listener au démarrage (initWatcher) et, à chaque événement, recharge le document affiché s'il correspond au chemin modifié et rafraîchit la sidebar si l'arborescence .md du dossier surveillé a changé. La surveillance est démarrée dans openPath (via startWatch) et arrêtée dans showHome (via stopWatch).

Thèmes

list_themes

list_themes() -> Vec<ThemeDto>   // ThemeDto { id: String, label: String }
  • Args : aucun.
  • Retour : les 6 thèmes (default, dark, sepia, large-text, emerald, shell-indigo) avec leur libellé.
  • Frontend : services/themes.js.

get_theme_css

get_theme_css(id: String) -> Option<String>
  • Args : id — identifiant du thème.
  • Retour : le CSS du thème (Some) ou None si l'identifiant est inconnu.
  • Comportement : le CSS est intégré au binaire (include_str! sur resources/themes/<id>.css).
  • Frontend : services/themes.js.

Récapitulatif

Commande Signature Retour
render_markdown (content: String) String
convert_file (path: String) Result<String, String>
get_syntax_highlight_css () String
list_md_files (dir: String) Result<Vec<String>, String>
start_watch (path: String) Result<(), String>
stop_watch () ()
list_themes () Vec<ThemeDto>
get_theme_css (id: String) Option<String>

Voir aussi