Demo

Platform APIs

@quan-erp/shared-frontend-core အတွက် API ကိုးကားချက်ဖြစ်ပါသည် — Web၊ Desktop (Electron) နှင့် Mobile (Capacitor) တို့တွင် hardware sensor၊ media၊ connectivity၊ storage နှင့် system ဝန်ဆောင်မှုများကို ဖုံးလွှမ်းပါသည်။

အနှစ်ချုပ်

Device bridge များကို plugin ထဲတွင် ကိုယ်တိုင် မရေးဘဲ ဤ platform API များကို ဦးစားပေး အသုံးပြုပါ။ Package သည် Web / Electron / Capacitor ကို စုစည်းပေးသောကြောင့် plugin များသည် API တစ်ခုတည်းကို ခေါ်ရုံဖြင့် Platforms က သင့်လျော်သော implementation သို့ လမ်းညွှန်ပေးပါသည်။

  • Package: @quan-erp/shared-frontend-core
  • System ဝန်ဆောင်မှုများကို static .instance (သို့မဟုတ် Doc ပါ factory) ဖြင့် ခေါ်ပါ
  • အတွင်းပိုင်း Platforms detection က native / web bridge ကို ရွေးချယ်ပါသည်
  • Core wrapper ရှိပြီးသား ဖြစ်ပါက plugin ထဲတွင် Capacitor / Electron API ကို တိုက်ရိုက် မရေးရပါ
TSXimport surface
1import { 2 Camera, 3 Clipboard, 4 Network, 5 Platforms, 6 PluginAPI, 7 PluginAssets, 8 RequestDto, 9 ResponseDto, 10 toast, 11} from "@quan-erp/shared-frontend-core";

Singleton ပုံစံ

Hardware နှင့် system ဝန်ဆောင်မှုအများစုသည် singleton ဖြစ်ပါသည်။ State နှင့် listener များ တစ်ခုတည်း ဖြစ်နေစေရန် .instance ကို အသုံးပြုရပါသည်။

TSXaccess pattern
1import { Camera, Network, Platforms } from "@quan-erp/shared-frontend-core"; 2 3const camera = Camera.instance; 4const network = Network.instance; 5 6const online = network.isOnline(); 7const onMobile = Platforms.isMobile(); 8const onDesktop = Platforms.isDesktop(); 9const onWeb = Platforms.isWeb(); 10 11// Always reuse .instance — do not `new Camera()`
TSXReact: branch by platform
1import { useMemo } from "react"; 2import { Platforms } from "@quan-erp/shared-frontend-core"; 3 4export function CaptureButton() { 5 const label = useMemo(() => { 6 if (Platforms.isMobile()) return "Take photo"; 7 if (Platforms.isDesktop()) return "Capture / upload"; 8 return "Upload image"; 9 }, []); 10 11 return <button type="button">{label}</button>; 12}

စာရင်း

ဤအပိုင်းတွင် အမျိုးအစားအလိုက် ကြည့်ရှုနိုင်ပါသည်။

  • Sensors — accelerometer၊ gyroscope၊ orientation၊ hand behavior
  • Media & hardware — camera၊ microphone၊ printer၊ vibration၊ clipboard
  • Connectivity — bluetooth၊ network၊ battery၊ geolocation
  • Storage — filesystem၊ SQLite၊ shared preferences
  • System — platform၊ device tier၊ locale၊ notifications၊ PluginAPI၊ assets၊ backend URL၊ number formatter
  • Utilities — version helpers၊ RequestDto / ResponseDto၊ toast၊ pagination DTO

စည်းကမ်းများ

start / listen API တိုင်းအတွက် lifecycle ပုံစံမှာ permission တောင်းခြင်း → start → unmount တွင် stop / unsubscribe ဖြစ်ပါသည်။

  • @quan-erp/shared-frontend-core မှသာ import လုပ်ပါ — node_modules အတွင်း deep path မသုံးရပါ
  • API တွင် requestPermission ရှိပါက camera / mic / location / bluetooth မသုံးမီ ခွင့်ပြုချက် တောင်းရပါသည်
  • မျက်နှာပြင် unmount သောအခါ sensor နှင့် media stream များကို stop လုပ်ရပါသည် (start / stop တွဲ)
  • Gryoscope class ကို import လုပ်သည့်အခါ source typo အတိုင်း စာလုံးပေါင်း မပြင်ရပါ
  • Plugin အချင်းချင်း သင်္ကေတအတွက် PluginAPI; plugin asset URL အတွက် PluginAssets.network ကို အသုံးပြုပါ
TSXcleanup template
1import { useEffect } from "react"; 2import { Accelerometer } from "@quan-erp/shared-frontend-core"; 3 4useEffect(() => { 5 const accel = Accelerometer.instance; 6 accel.start((data) => { 7 console.log(data); 8 }); 9 return () => { 10 accel.stop(); 11 }; 12}, []);