يعتمد ملايين المستخدمين على تطبيق واتساب WhatsApp، كوسيلة للتواصل بشكل خاص وآمن مع الآخرين، وهذا هو السبب في أن مطوري الشركة يبحثون باستمرار عن طرق جديدة لتحسين خدمة المراسلة المشفرة مع وضع هذه المبادئ الأساسية في الاعتبار.
وفي شهر مايو الماضي، قدم تطبيق واتساب بميزة قفل الدردشة الجديدة التي تتيح لك تأمين محادثات محددة في صندوق الوارد الخاص بك خلف رمز مرور أو بصمة أو مصادقة Face ID.
ومن بين أحدث ميزات الخصوصية في واتساب هي ميزة قفل الدردشة Chat Lock، والتي تتيح لك حماية محادثاتك خلف طبقة أخرى من الأمان.
ووفقا لما ذكره موقع “macrumors”، عندما تقوم بقفل محادثة ما، يتم فصلها تلقائيا عن قائمة الدردشة الرئيسية وإخفائها في مجلد مقفل يتطلب رمز المرور أو بصمة الإصبع أو مصادقة ميزة الحماية للتعرف على الوجوه Face ID لفتحها.
وعلاوة على ذلك، لا تظهر معاينات الإشعارات لأي محادثات مقفلة محتوى المرسل أو الرسالة، ولا يتم حفظ أي وسائط مشتركة في الدردشات المقفلة تلقائيا في مكتبة الصور بهاتفك، مما يجعل المحادثات أكثر خصوصية.
ويجب أن تكون هذه الميزة مفيدة إذا كنت تشارك هاتفك في بعض الأحيان، مع أحد أفراد العائلة أو في الحالات التي ينظر فيها شخص آخر إلى شاشة هاتفك في اللحظة التي تصل فيها محادثة شديدة الحساسية.
توضح لك الخطوات التالية كيفية قفل محادثة واتساب
1. افتح تطبيق واتساب، ثم انقر فوق المحادثة في صندوق الوارد الخاص بالدردشات الذي تريد قفله.
2. بعد ذلك، انقر فوق اسم جهة الاتصال أو اسم المجموعة أعلى الشاشة.
3. اضغط على قفل الدردشة في قائمة معلومات الاتصال.
4. انقر فوق المفتاح الموجود بجوار خيار قفل هذه الدردشة، سيقول “مع معرف الوجه” أو أي مصادقة يدعمها جهازك.
5. انقر فوق “عرض” للعودة فورا إلى الدردشة المقفلة.
6. للعودة إلى الدردشة المقفلة في وقت لاحق، اسحب لأسفل ببطء صندوق الوارد الخاص بالدردشات لكشف مجلد الدردشات المقفلة، ثم اضغط عليه، وسيطلب منك المصادقة، وبعد ذلك ستتمكن من رؤية جميع الدردشات المقفلة والوصول إليها في قائمة منفصلة.

replaceOembeds();
function replaceOembeds() {
var allEmbeds = document.getElementsByTagName(“OEMBED”);
while (allEmbeds.length != 0) {
replaceOembedWithHtml(allEmbeds[0], extractLinkFromOembed(allEmbeds[0]));
allEmbeds = document.getElementsByTagName(“OEMBED”);
}
runYoutubeLazyLoad();
setTimeout(function () {
loadfbApi();
}, 4000);
}
function replaceOembedWithHtml(element, sourceData) {
if (sourceData.source.toLowerCase() === “youtube”) {
var html=”
‘;
replaceElementWithHtml(element, html);
} else if (sourceData.source.toLowerCase() === “instagram”) {
var html=”
‘;
replaceElementWithHtml(element, html);
} else if (sourceData.source.toLowerCase() === “twitter”) {
var html=”
‘;
replaceElementWithHtml(element, html);
} else if (sourceData.source.toLowerCase() === “facebook”) {
var html=”
‘
replaceElementWithHtml(element, html);
} else {
replaceElementWithHtml(element, “”);
}
}
function extractLinkFromOembed(element) {
return getUrlSource(element.getAttribute(“url”));
}
function getUrlSource(url) {
var ytRegex = /http(?:s?)://(?:www.)?youtu(?:be.com/watch?v=|.be/)([w-_]*)(&(amp;)?[w?=]*)?/;
var instaRegex = /(https?://www.)?instagram.com(/p/(w+)/?)/;
var twitterRegex = /twitter.com/.*/status(?:es)?/([^/?]+)/;
var fbRegex = /^https?://www.facebook.com.*/(video(s)?|watch|story|posts)(.php?|/).+$/;
if (ytRegex.test(url)) {
return {
source: “Youtube”,
url: url,
id: ytRegex.exec(url)[1]
};
}
if (instaRegex.test(url)) {
return {
source: “Instagram”,
url: url,
id: instaRegex.exec(url)[3]
};
}
if (twitterRegex.test(url)) {
return {
source: “Twitter”,
url: url,
id: twitterRegex.exec(url)[1]
};
}
if (fbRegex.test(url)) {
return {
source: “Facebook”,
url: url,
id: fbRegex.exec(url)[1]
};
}
return {
source: “Unknown”,
url: url,
id: “”
};
}
function replaceElementWithHtml(element, html) {
var str = html;
var Obj = element; //any element to be fully replaced
if (Obj.outerHTML) { //if outerHTML is supported
Obj.outerHTML = str; ///it’s simple replacement of whole element with contents of str var
} else { //if outerHTML is not supported, there is a weird but crossbrowsered trick
var tmpObj = document.createElement(“div”);
tmpObj.innerHTML = ‘‘;
ObjParent = Obj.parentNode; //Okey, element should be parented
ObjParent.replaceChild(tmpObj, Obj); //here we placing our temporary data instead of our target, so we can find it then and replace it into whatever we want to replace to
ObjParent.innerHTML = ObjParent.innerHTML.replace(‘
‘, str);
}
}
function loadfbApi() {
var js = document.createElement(‘script’);
js.src=”https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.2″;
document.body.appendChild(js);
}
function runYoutubeLazyLoad() {
/// youtube lazyload
var youtube = document.querySelectorAll(“.youtube”);
for (var i = 0; i < youtube.length; i++) {
var source = "https://img.youtube.com/vi/" + youtube[i].dataset.embed +
"/0.jpg";
var image = new Image();
image.src = "/themes/elbalad/assets/images/no.jpg";
image.classList.add('lazyload');
image.setAttribute("data-src", source);
image.setAttribute("alt", "youtube");
image.addEventListener("load", function () {
youtube[i].appendChild(image);
}(i));
youtube[i].addEventListener("click", function () {
var iframe = document.createElement("iframe");
iframe.setAttribute("frameborder", "0");
iframe.setAttribute("allowfullscreen", "");
iframe.setAttribute("src", "https://www.youtube.com/embed/" + this.dataset
.embed + "?rel=0&showinfo=0&autoplay=1");
this.innerHTML = "";
this.appendChild(iframe);
});
};
}