⌨️ עורך קוד (WebApp Editor)

תוכן זה מסביר את טעינת העורך, מנגנון הגיבוי, וניהול העדפות.


טעינת CodeMirror ומצב isLoading

  • נטען את CodeMirror בצורה דינמית.

  • אם הטעינה נכשלת → מנגנון fallback (textarea) מופעל.

  • במהלך הטעינה מוצג מצב isLoading כדי למנוע אינטראקציה מיותרת.

let isLoading = true;
try {
  const cm = await import('codemirror');
  // init editor...
} catch (e) {
  console.warn('Editor fallback to textarea', e);
} finally {
  isLoading = false;
}

שמירת העדפות משתמש – שני נתיבי API

כדי לשמור תאימות לאחור, מומלץ לכתוב לשני נתיבים:

  • POST /api/ui_prefs

  • POST /api/user/preferences

async function savePrefs(prefs) {
  const body = JSON.stringify(prefs);
  const headers = { 'Content-Type': 'application/json' };
  // כתיבה לשני מסלולים (best-effort)
  await Promise.allSettled([
    fetch('/api/ui_prefs', { method: 'POST', headers, body }),
    fetch('/api/user/preferences', { method: 'POST', headers, body }),
  ]);
}

savePrefs({ wrap: true, fontSize: 14, theme: 'ocean' });

שדות טיפוסיים: wrap, fontSize, theme, tabSize.


המלצות

  • אחסון לוקאלי משלים (localStorage) להאצת טעינה.

  • ולידציה צד־שרת לערכים חריגים.

  • לוגים מאוחדים עם request_id עבור פעולות עריכה ושמירת העדפות.