ফাইল সিস্টেম অ্যাক্সেস API-এর জন্য অবিরাম অনুমতি

বারবার অনুমতি না দিয়ে ফাইল এবং ফোল্ডারগুলিতে ক্রমাগত পড়ার এবং লেখার অ্যাক্সেস পাওয়ার একটি উপায় এখন রয়েছে। এই পোস্টটি কিভাবে কাজ করে তা ব্যাখ্যা করে। বিশদ বিবরণে ডুব দেওয়ার আগে, স্থিতাবস্থার একটি দ্রুত সংক্ষিপ্ত বিবরণ এবং যে সমস্যার সমাধান করা হচ্ছে।

বর্তমান পদ্ধতির সাথে চ্যালেঞ্জ

ফাইল সিস্টেম অ্যাক্সেস API ডেভেলপারদের ব্যবহারকারীর স্থানীয় হার্ড ডিস্কের ফাইলগুলিকে পড়ার এবং (ঐচ্ছিকভাবে) লেখার পদ্ধতিতে অ্যাক্সেস করতে দেয়। একটি জনপ্রিয় অ্যাপ ( অন্য অনেকের মধ্যে) যেটি এই এপিআই ব্যবহার করে তা হল ভিজ্যুয়াল স্টুডিও কোড (ভিএস কোড), মাইক্রোসফটের আইডিই যা সরাসরি ব্রাউজারে চলে। আপনি যখন VS কোড খুলবেন, তখন আপনাকে একটি স্বাগতম স্ক্রীন দিয়ে অভ্যর্থনা জানানো হবে যেখানে আপনি একটি নতুন ফাইল তৈরি করতে পারেন, বা একটি বিদ্যমান ফাইল বা একটি ফোল্ডার খুলতে পারেন৷

ভিজ্যুয়াল স্টুডিও কোডের স্বাগত স্ক্রীন।

আপনি যদি ফোল্ডার খুলতে ক্লিক করেন এবং আপনার হার্ড ডিস্কের ফোল্ডারগুলির মধ্যে একটি বেছে নেন, তাহলে ব্রাউজার আপনাকে জিজ্ঞাসা করবে যে আপনি এই ফোল্ডারটিতে ভিএস কোড দেখার অ্যাক্সেস পেতে চান কিনা।

ভিজ্যুয়াল স্টুডিও কোড ভিউ অ্যাক্সেসের জন্য জিজ্ঞাসা করছে।

একবার আপনি অ্যাক্সেস মঞ্জুর করলে, আপনি ফোল্ডার অনুক্রমটি নেভিগেট করতে পারেন এবং VS কোডের সম্পাদকে ফাইলগুলি খুলতে পারেন। আপনি যদি কোনো ফাইলে পরিবর্তন করেন, তাহলে ব্রাউজার আপনাকে জিজ্ঞাসা করবে আপনি ফোল্ডারটিতে সম্পাদনার অ্যাক্সেস দিতে চান কিনা।

ভিজ্যুয়াল স্টুডিও কোড সম্পাদনা অ্যাক্সেসের জন্য জিজ্ঞাসা করছে।

আপনি যদি এটির অনুমতি দেন, তাহলে অ্যাড্রেস বারে ফাইল আইকনটি পরিবর্তিত হয় এবং একটি সামান্য নিচের তীর যোগ করা হয়, যা নির্দেশ করে যে অ্যাপটি পড়ার এবং লেখার অনুমতি রয়েছে৷ অনুমতিগুলি পরিবর্তন করতে, আইকনে ক্লিক করুন এবং তারপরে অ্যাক্সেস সরান , যাতে অ্যাপটি আর ফাইলগুলি সম্পাদনা করতে না পারে৷

ঠিকানা বার আইকন প্রম্পট সহ ভিজ্যুয়াল স্টুডিও কোড।

আপনি উত্সের শেষ ট্যাবটি বন্ধ না করা পর্যন্ত অ্যাক্সেস স্থায়ী হয়৷ আপনি যদি অ্যাপটি বন্ধ করে আবার এটি খুলেন, VS কোড ধরনের আপনাকে আপনি যেখানে ছেড়েছিলেন সেখানে চালিয়ে যেতে দেয়। সাম্প্রতিক খুলুন ক্লিক করার সময়, VS কোড পুনরায় খোলার জন্য পূর্বে খোলা ফোল্ডার অফার করে।

ভিজ্যুয়াল স্টুডিও কোড সর্বশেষ খোলা ফাইল অফার.

কিন্তু আপনি আগে ফোল্ডারে লেখার অনুমতি দিলেও, আপনাকে এখন আবার অ্যাক্সেস দিতে হবে। এটি সত্যিই দ্রুত ক্লান্তিকর পায়. সমাধানে ডুব দেওয়ার আগে, অর্থাৎ, ফাইল সিস্টেম অ্যাক্সেস API-এর জন্য অবিরাম অনুমতি, কীভাবে VS কোড এমনকি সাম্প্রতিক ফোল্ডারগুলি মনে রাখতে পরিচালনা করে?

ভিজ্যুয়াল স্টুডিও কোড পুনরায় লোড করার পরে সম্পাদনা অ্যাক্সেসের জন্য জিজ্ঞাসা করছে।

ফাইল সিস্টেম অ্যাক্সেস API-তে, ফাইল এবং ফোল্ডারগুলির অ্যাক্সেস FileSystemHandle অবজেক্টের মাধ্যমে পরিচালিত হয়: ফাইলগুলির জন্য FileSystemFileHandle অবজেক্ট এবং ফোল্ডারগুলির (ডিরেক্টরি) জন্য FileSystemDirectoryHandle অবজেক্ট। উভয়ই IndexedDB এ সংরক্ষণ করা যেতে পারে, এবং VS কোড ঠিক এটিই করে। আপনি Chrome DevTools খোলার মাধ্যমে এটি দেখতে পারেন, অ্যাপ্লিকেশন ট্যাবে IndexedDB বিভাগে নেভিগেট করুন এবং vscode-web-db ডাটাবেসে প্রাসঙ্গিক টেবিল vscode-filehandles-store নির্বাচন করুন৷

Chrome DevTools ডিবাগিং ভিজ্যুয়াল স্টুডিও কোড সঞ্চিত FileSystemHandle সহ IndexedDB বিভাগ দেখাচ্ছে।

নতুন উপায়: কী পরিবর্তন হচ্ছে এবং কখন

ব্যবহারকারীদের ক্রমাগত পুনরায় অনুরোধ করার প্রয়োজন এড়িয়ে, ব্যবহারকারীদের তাদের ফাইল এবং ফোল্ডারগুলিতে ঐচ্ছিকভাবে স্থায়ী অ্যাক্সেস দেওয়ার জন্য Chrome নতুন আচরণ চালু করছে। Chrome 122-এর মতো নতুন আচরণ লক্ষ্য করা যেতে পারে। আগে এটি পরীক্ষা করতে, Chrome 120 থেকে শুরু করে, দুটি পতাকা chrome://flags/#file-system-access-persistent-permission এবং chrome://flags/#one-time-permission টগল করুন chrome://flags/#one-time-permission সক্রিয় করার জন্য।

প্রথমত, নতুন আচরণে একটি নতুন ত্রি-মুখী অনুমতি প্রম্পট রয়েছে যা ঐচ্ছিকভাবে ব্যবহারকারীদের প্রতিটি ভিজিটে নির্বাচিত ফাইল এবং ফোল্ডারগুলিতে অ্যাপ্লিকেশনগুলিকে অ্যাক্সেস দিতে দেয়।

থ্রি-ওয়ে পারমিশন প্রম্পট সহ ভিজ্যুয়াল স্টুডিও কোড।

এই নতুন থ্রি-ওয়ে প্রম্পটে নিম্নলিখিত বিকল্পগুলি রয়েছে:

  • এই সময় অনুমতি দিন: অ্যাপটিকে বর্তমান সেশনের জন্য ফাইলগুলিতে অ্যাক্সেস করার অনুমতি দেয়৷ (এটি বিদ্যমান আচরণের সাথে মিলে যায়।)
  • প্রতিটি দর্শনে অনুমতি দিন: অ্যাক্সেস প্রত্যাহার না করা পর্যন্ত অ্যাপটিকে অনির্দিষ্টকালের অ্যাক্সেসের অনুমতি দেয়। একবার অ্যাপটিকে ক্রমাগত অ্যাক্সেস দেওয়া হলে, নতুন খোলা ফাইল এবং ফোল্ডারগুলিও অবিচ্ছিন্নভাবে অ্যাক্সেসযোগ্য হবে।
  • অনুমতি দেবেন না: অ্যাপটিকে ফাইলগুলিতে অ্যাক্সেসের অনুমতি দেয় না। (এটি বিদ্যমান আচরণের সাথে মিলে যায়।)

দ্বিতীয়ত, নতুন আচরণ সাইট সেটিংসে একটি নতুন বিভাগকে অন্তর্ভুক্ত করে, যা ব্যবহারকারীরা ফাইল এডিটিং টগলের পাশে একটি লঞ্চ আইকনের মাধ্যমে পৌঁছাতে পারে।

ফাইল সম্পাদনা আইকন সহ ভিজ্যুয়াল স্টুডিও কোড সাইট সেটিংস।

এই লঞ্চ আইকনটিতে ক্লিক করা হলে, প্রশ্নযুক্ত অ্যাপের জন্য গোপনীয়তা এবং নিরাপত্তা সেটিংস খোলে যেখানে ব্যবহারকারী অ্যাপটির অ্যাক্সেস আছে এমন সমস্ত ফাইল এবং ফোল্ডারগুলির জন্য আইটেমগুলির একটি তালিকা দেখতে পান। ট্র্যাশক্যান আইকনে ক্লিক করে প্রতি-আইটেমের ভিত্তিতে অ্যাক্সেস প্রত্যাহার করা যেতে পারে। আইটেম প্রতি অ্যাক্সেস সরানোর অর্থ হল অ্যাপটিকে এখনও সাধারণভাবে ফাইলগুলিতে অ্যাক্সেস দেওয়া যেতে পারে। সাধারণভাবে অ্যাক্সেস প্রত্যাহার করতে, ব্যবহারকারী ঠিকানা বারে আইকনে ক্লিক করতে পারেন, যেমনটি পূর্বে বর্ণিত হয়েছে।

vscode.dev সাইটের জন্য Chrome গোপনীয়তা এবং নিরাপত্তা সেটিংস।

কিভাবে নতুন আচরণ ট্রিগার

ফাইল সিস্টেম অ্যাক্সেস API-তে কোনও বিকাশকারী-মুখী পরিবর্তন নেই। অবিরাম অনুমতি সহ নতুন আচরণ ট্রিগার করার জন্য, বিভিন্ন পূর্বশর্ত সহ তিনটি উপায় রয়েছে যা পূরণ করতে হবে:

  1. ব্যবহারকারীকে অবশ্যই একটি ফাইল বা ফোল্ডার (বা একাধিক ফাইল বা ফোল্ডার) একটি মূলে শেষ পরিদর্শনের সময় অনুমতি দিতে হবে এবং অ্যাপটি অবশ্যই ইনডেক্সডডিবি-তে সংশ্লিষ্ট FileSystemHandle অবজেক্টগুলি সংরক্ষণ করতে হবে। উত্সের পরবর্তী ভিজিট করার পরে, অ্যাপটি অবশ্যই IndexedDB থেকে সঞ্চিত FileSystemHandle অবজেক্টগুলির যে কোনও একটি পুনরুদ্ধার করেছে এবং তারপরে এটিকে FileSystemHandle.requestPermission() পদ্ধতি বলেছে৷ এই পূর্বশর্তগুলি পূরণ করা হলে, নতুন ত্রিমুখী প্রম্পট দেখানো হবে।
  2. অরিজিনকে অবশ্যই FileSystemHandle.requestPermission() পদ্ধতিকে একটি FileSystemHandle এ বলা হবে যেখানে আগে অ্যাক্সেস দেওয়া হয়েছিল, কিন্তু ট্যাবটি কিছু সময়ের জন্য ব্যাকগ্রাউন্ড হওয়ার কারণে যার অ্যাক্সেস স্বয়ংক্রিয়ভাবে প্রত্যাহার করা হয়েছে৷ ( ক্রোম-এ এককালীন অনুমতি নিবন্ধে বর্ণিত একই যুক্তির উপর ভিত্তি করে স্বয়ংক্রিয় অনুমতি প্রত্যাহার কাজ করে।) যদি এই পূর্বশর্তগুলি পূরণ করা হয়, নতুন ত্রিমুখী প্রম্পট দেখানো হবে।
  3. ব্যবহারকারী অবশ্যই অ্যাপটি ইনস্টল করেছেন। ব্যবহারকারী একবার অ্যাক্সেস দেওয়ার পরে ইনস্টল করা অ্যাপগুলি স্বয়ংক্রিয়ভাবে অনুমতিগুলি বজায় রাখবে৷ এই ক্ষেত্রে, থ্রি-ওয়ে প্রম্পট দেখানো হবে না, পরিবর্তে অ্যাপটি ডিফল্টরূপে নতুন আচরণ পায়।

প্রথম এবং দ্বিতীয় ক্ষেত্রে, প্রম্পটটি সমস্ত FileSystemHandle অবজেক্টের তালিকা করে যা অ্যাপটির পূর্বে অ্যাক্সেস ছিল, শুধু যেটির জন্য requestPermission() পদ্ধতি কল করা হচ্ছে তা নয়। এককালীন অনুমতিতে এটি যেভাবে কাজ করে তার সাথে সারিবদ্ধ করে, যদি ব্যবহারকারী তিনবারের বেশি প্রম্পটটিকে অস্বীকার করে বা খারিজ করে, তবে এটি আর ট্রিগার হবে না এবং পরিবর্তে নিয়মিত অনুমতি প্রম্পট দেখাবে।

নতুন আচরণের চেষ্টা করুন

আপনার যদি Chrome এর একটি সমর্থনকারী সংস্করণ থাকে বা প্রয়োজনীয় ফ্ল্যাগ সেট থাকে, তাহলে আপনি ওয়েবে VS কোডে নতুন আচরণ পরীক্ষা করতে পারেন। একটি ফোল্ডার খুলুন এবং অ্যাক্সেস মঞ্জুর করুন, তারপর ট্যাবটি বন্ধ করুন এবং এটি পুনরায় খুলুন এবং সাম্প্রতিক খুলুন ক্লিক করুন (মনে রাখবেন যে অবিলম্বে পুনরায় লোড করা প্রম্পটটি ট্রিগার করার জন্য কাজ করে না, সমস্ত ট্যাব বন্ধ করতে হবে)। পূর্ববর্তী ফোল্ডার নির্বাচন করুন এবং নতুন প্রম্পট দেখাবে। আরও কম পরীক্ষার জন্য, Persistent File System Access ডেমো দেখুন এবং এর সোর্স কোড দেখুন

উপসংহার

ফাইল সিস্টেম অ্যাক্সেস API-এর জন্য অবিরাম অনুমতিগুলি হল API-এর সর্বাধিক অনুরোধ করা বৈশিষ্ট্যগুলির মধ্যে একটি এবং বাস্তবায়ন বাগটি অত্যন্ত জনপ্রিয়, এছাড়াও অনেক ডেভেলপার এতে অভিনীত। এই বৈশিষ্ট্যটি ডেভেলপারদের হাতে এবং সর্বাগ্রে, ব্যবহারকারীদের হাতে আনার মাধ্যমে, প্ল্যাটফর্ম-নির্দিষ্ট অ্যাপগুলির তুলনায় একটি গুরুত্বপূর্ণ বৈশিষ্ট্যের ব্যবধান এখন বন্ধ হয়ে গেছে।

স্বীকৃতি

এই পোস্টটি ক্রিস্টিন হলিংসওয়ার্থ , অস্টিন সুলিভান এবং রাচেল অ্যান্ড্রু দ্বারা পর্যালোচনা করা হয়েছে।