bridge.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. (function () {
  2. 'use strict';
  3. var invoke = window.__TAURI__.core.invoke;
  4. var listen = window.__TAURI__.event.listen;
  5. // ── Rust → JS ──────────────────────────────
  6. listen('pet://state', function (e) {
  7. if (window.cfcPetAPI) window.cfcPetAPI.notifyState(e.payload);
  8. });
  9. listen('pet://bubble', function (e) {
  10. if (window.cfcPetAPI) window.cfcPetAPI.showBubble(e.payload.text, e.payload.durationMs);
  11. });
  12. listen('pet://config', function (e) {
  13. if (window.cfcPetAPI) window.cfcPetAPI.loadConfig(e.payload);
  14. });
  15. // ── JS → Rust(替换 chrome.webview.hostObjects.sync.cfcHost)──
  16. window.cfcHost = {
  17. onInteract: function (action, dataJson) {
  18. try {
  19. invoke('on_interact', { action: action, data: dataJson });
  20. } catch (err) {
  21. console.log('[interaction]', action, dataJson);
  22. }
  23. },
  24. onDragStart: function () {
  25. try { invoke('drag_start'); } catch (e) { /* noop */ }
  26. },
  27. onDragEnd: function () {
  28. try { invoke('drag_end'); } catch (e) { /* noop */ }
  29. }
  30. };
  31. })();