# 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('', { })`. 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 ``` - **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, 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](../1-fonctionnel/1.2-Fonctionnalites.md#fonctionnalité-présente-mais-non-branchée). ### `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 { 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 ``` - **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/.css`). - **Frontend** : `services/themes.js`. ## Récapitulatif | Commande | Signature | Retour | |---|---|---| | `render_markdown` | `(content: String)` | `String` | | `convert_file` | `(path: String)` | `Result` | | `get_syntax_highlight_css` | `()` | `String` | | `list_md_files` | `(dir: String)` | `Result, String>` | | `start_watch` | `(path: String)` | `Result<(), String>` | | `stop_watch` | `()` | `()` | | `list_themes` | `()` | `Vec` | | `get_theme_css` | `(id: String)` | `Option` | ## Voir aussi - [Architecture](2.1-Architecture.md) - [Thèmes et personnalisation](../1-fonctionnel/1.4-Themes-et-personnalisation.md)