الأذونات الدائمة لواجهة برمجة التطبيقات File System Access API

تتوفّر الآن طريقة للحصول على إذن دائم بالقراءة والكتابة في الملفات والمجلدات بدون الحاجة إلى منح الأذونات بشكل متكرّر. توضّح هذه المشاركة طريقة عملها. قبل الخوض في التفاصيل، إليك ملخّصًا سريعًا للوضع الراهن والمشكلة التي يتم حلّها.

المشاكل في الطريقة الحالية

تتيح واجهة برمجة التطبيقات File System Access API للمطوّرين الوصول إلى الملفات على القرص الصلب المحلي للمستخدم بطريقة تتيح القراءة والكتابة (اختياريًا). أحد التطبيقات الشائعة (من بين تطبيقات أخرى كثيرة) التي تستخدم واجهة برمجة التطبيقات هذه هو Visual Studio Code (VS Code)، وهو بيئة تطوير متكاملة من Microsoft تعمل مباشرةً في المتصفّح. عند فتح VS Code، ستظهر لك شاشة الترحيب حيث يمكنك إنشاء ملف جديد أو فتح ملف أو مجلد حالي.

شاشة الترحيب في Visual Studio Code

إذا نقرت على فتح مجلد واخترت أحد المجلدات على القرص الصلب، سيطلب منك المتصفح تحديد ما إذا كنت تريد منح VS Code إذن عرض هذا المجلد.

يطلب محرِّر Visual Studio Code إذن الوصول إلى المستند.

بعد منح الإذن بالوصول، يمكنك التنقّل في التسلسل الهرمي للمجلدات وفتح الملفات في محرّر VS Code. إذا أجريت تعديلاً على أي من الملفات، سيطلب منك المتصفّح تحديد ما إذا كنت تريد منح الإذن بتعديل المجلد.

يطلب محرِّر Visual Studio Code الإذن بالتعديل.

في حال السماح بذلك، سيتغيّر رمز الملف في شريط العناوين، وسيتم إضافة سهم صغير للأسفل يشير إلى أنّ التطبيق لديه أذونات القراءة والكتابة. لتغيير الأذونات، انقر على الرمز ثم على إزالة إذن الوصول، وبذلك لن يتمكّن التطبيق من تعديل الملفات.

محرِّر Visual Studio Code مع طلب رمز شريط العناوين

يستمر الوصول إلى أن تغلق علامة التبويب الأخيرة للمصدر. إذا أغلقت التطبيق ثم فتحته مرة أخرى، سيسمح لك VS Code نوعًا ما بمتابعة العمل من حيث توقفت. عند النقر على فتح الملفات الأخيرة، سيقترح VS Code إعادة فتح المجلد الذي فتحته سابقًا.

يعرض محرِّر Visual Studio Code آخر الملفات التي تم فتحها.

وحتى إذا سبق لك منح إذن الكتابة إلى المجلد، عليك الآن منح الإذن بالوصول إليه مرة أخرى. ويصبح ذلك مرهقًا بسرعة. قبل التعرّف على الحلّ، أي الأذونات الدائمة لواجهة برمجة التطبيقات File System Access API، كيف يتذكّر VS Code المجلدات الحديثة؟

يطلب محرِّر Visual Studio Code إذن التعديل بعد إعادة التحميل.

في File System Access API، تتم إدارة الوصول إلى الملفات والمجلدات من خلال كائنات FileSystemHandle ، وهي كائنات FileSystemFileHandle للملفات، وكائنات FileSystemDirectoryHandle للمجلدات (الأدلة). يمكن تخزين كليهما في IndexedDB، وهذا ما يفعله VS Code بالضبط. يمكنك الاطّلاع على ذلك من خلال فتح "أدوات مطوّري Chrome"، ثم الانتقال إلى قسم IndexedDB في علامة التبويب التطبيق، واختيار الجدول ذي الصلة vscode-filehandles-store في قاعدة البيانات vscode-web-db.

تصحيح أخطاء Chrome DevTools في Visual Studio Code يعرض قسم IndexedDB مع FileSystemHandle المخزّن.

الطريقة الجديدة: التغييرات وتاريخ تطبيقها

سيطلق Chrome سلوكًا جديدًا يتيح للمستخدمين منح إذن وصول دائم بشكل اختياري إلى ملفاتهم ومجلداتهم، ما يجنّبهم الحاجة إلى إعادة طلب الإذن منهم باستمرار. يمكن ملاحظة السلوك الجديد اعتبارًا من الإصدار 122 من Chrome. لاختبارها في وقت مبكر، بدءًا من الإصدار 120 من Chrome، فعِّل العلامتَين chrome://flags/#file-system-access-persistent-permission وchrome://flags/#one-time-permission من خلال ضبطهما على مفعَّلة.

أولاً، يتضمّن السلوك الجديد طلب إذن جديدًا ثلاثي الاتجاهات يتيح للمستخدمين بشكل اختياري منح التطبيقات إذن الوصول إلى الملفات والمجلدات المحدّدة في كل زيارة.

محرِّر Visual Studio Code مع طلب إذن ثلاثي الاتجاه

تتضمّن رسالة التوجيه الثلاثية الجديدة الخيارات التالية:

  • السماح بهذا الوقت: يسمح هذا الخيار للتطبيق بالوصول إلى الملفات خلال الجلسة الحالية. (يتوافق ذلك مع السلوك الحالي).
  • السماح بالاستخدام في كل زيارة: يتيح للتطبيق الوصول إلى الموقع الجغرافي إلى أجل غير مسمى ما لم يتم إبطال الإذن. بعد منح التطبيق إذن الوصول الدائم، سيتمكّن التطبيق أيضًا من الوصول بشكل دائم إلى الملفات والمجلدات التي يتم فتحها حديثًا.
  • عدم السماح: لا يسمح للتطبيق بالوصول إلى الملفات. (يتوافق ذلك مع السلوك الحالي.)

ثانيًا، يتضمّن السلوك الجديد قسمًا جديدًا في إعدادات الموقع الإلكتروني، ويمكن للمستخدمين الوصول إليه من خلال رمز التشغيل بجانب زر التبديل تعديل الملفات.

إعدادات موقع Visual Studio Code مع رمز تعديل الملف

عند النقر على رمز التشغيل هذا، يتم فتح إعدادات الخصوصية والأمان للتطبيق المعنيّ، حيث يرى المستخدم قائمة بعناصر تتضمّن جميع الملفات والمجلدات التي يمكن للتطبيق الوصول إليها. يمكن إبطال الإذن على مستوى كل عنصر على حدة من خلال النقر على رمز سلة المهملات. تعني إزالة إذن الوصول إلى كل عنصر على حدة أنّه سيظل بإمكان التطبيق الحصول على إذن الوصول إلى الملفات بشكل عام. لإلغاء إذن الوصول بشكل عام، يمكن للمستخدم النقر على الرمز في شريط العناوين، كما هو موضّح سابقًا.

إعدادات الخصوصية والأمان في Chrome لموقع vscode.dev الإلكتروني

كيفية تشغيل السلوك الجديد

لم يتم إجراء أي تغييرات على File System Access API تستهدف المطوّرين. لتفعيل السلوك الجديد باستخدام الأذونات الدائمة، هناك ثلاث طرق تتضمّن شروطًا مسبقة مختلفة يجب استيفاؤها:

  1. يجب أن يكون المستخدم قد منح الإذن بالوصول إلى ملف أو مجلد (أو عدة ملفات أو مجلدات) خلال آخر زيارة إلى مصدر معيّن، ويجب أن يكون التطبيق قد خزّن عناصر FileSystemHandle المقابلة في IndexedDB. عند زيارة المصدر في المرة التالية، يجب أن يكون التطبيق قد استردّ أيًا من عناصر FileSystemHandle المخزّنة من IndexedDB، ثم استدعى طريقة FileSystemHandle.requestPermission(). في حال استيفاء هذه الشروط المسبقة، سيتم عرض الطلب الجديد المكوّن من ثلاث خطوات.
  2. يجب أن يكون المصدر قد استدعى الطريقة FileSystemHandle.requestPermission() على FileSystemHandle تم منح إذن الوصول إليه سابقًا، ولكن تم إبطال إذن الوصول إليه تلقائيًا لأنّ علامة التبويب تم تصغيرها لفترة من الوقت. (يتم إبطال الأذونات تلقائيًا استنادًا إلى المنطق نفسه الموضّح في المقالة أذونات لمرة واحدة في Chrome). في حال استيفاء هذه الشروط المسبقة، سيتم عرض الطلب الجديد المكوّن من ثلاثة أجزاء.
  3. يجب أن يكون المستخدم قد ثبّت التطبيق، وستبقى الأذونات التي يمنحها المستخدم محفوظة تلقائيًا. في هذه الحالة، لن يظهر طلب الموافقة الثلاثي، بل سيتم تلقائيًا تطبيق السلوك الجديد على التطبيق.

في الحالة الأولى والثانية، تعرض الرسالة جميع الكائنات التي سبق للتطبيق الوصول إليها، وليس فقط الكائن الذي يتم استدعاء طريقة requestPermission() له.FileSystemHandle تماشيًا مع طريقة عملها في الأذونات التي تُمنح لمرة واحدة، إذا رفض المستخدم الطلب أو تجاهله أكثر من ثلاث مرات، لن يظهر الطلب مرة أخرى، وسيظهر بدلاً منه طلب الإذن العادي.

تجربة السلوك الجديد

إذا كان لديك إصدار متوافق من Chrome أو تم ضبط العلامات المطلوبة، يمكنك اختبار السلوك الجديد في VS Code على الويب. افتح مجلدًا وامنح الإذن بالوصول إليه، ثم أغلِق علامة التبويب وأعِد فتحها وانقر على فتح الملفات الحديثة (يُرجى العِلم أنّ إعادة التحميل الفوري لا تؤدي إلى ظهور الطلب، بل يجب إغلاق جميع علامات التبويب). اختَر المجلد السابق وسيظهر الطلب الجديد.

الاستنتاجات

يُعدّ منح أذونات دائمة لواجهة File System Access API إحدى الميزات الأكثر طلبًا في واجهة برمجة التطبيقات، كما أنّ خطأ التنفيذ يحظى بشعبية كبيرة أيضًا، إذ أضافه العديد من المطوّرين إلى قائمة الميزات المفضّلة لديهم. من خلال توفير هذه الميزة للمطوّرين، وقبل كل شيء للمستخدمين، تم سد فجوة مهمة في الميزات مقارنةً بالتطبيقات الخاصة بمنصات معيّنة.

كلمة شكر

تمت مراجعة هذه المشاركة من قِبل كريستين هولينغسورث وأوستن سوليفان وراشيل أندرو.