From 2d5505065b3c9372eda1d4c0032f547d5c6c9ff7 Mon Sep 17 00:00:00 2001 From: payacom <59262811+payacom@users.noreply.github.com> Date: Wed, 9 Sep 2026 10:19:27 +0330 Subject: [PATCH] git --- public/offline.html | 50 ++++ public/service-worker.js | 7 +- .../academy/[id]/[title]/CourseClient.tsx | 1 + src/app/about-us/page.tsx | 34 ++- src/app/globals.css | 2 + src/app/layout.tsx | 3 +- .../chats/shop/[shopId]/[buyerId]/page.tsx | 21 +- .../settings/profile/user-settings/page.tsx | 1 + src/components/AnalyticsTracker.tsx | 166 +++++++++++++ src/components/Layout.tsx | 2 + src/components/PwaHead.tsx | 46 ++-- src/components/chat/E2eeIdentityGate.tsx | 228 ++++++++++++++++++ src/components/course/CourseForm.tsx | 2 + .../models/MainModelCard/SwipeImageSlider.tsx | 1 + src/components/models/ModelsFilter.tsx | 6 +- .../ProjectPage/ProjectRequestForm.tsx | 2 +- .../Workroom/ProjectRequestsAction.tsx | 1 + src/components/pwa/PwaInstallPrompt.tsx | 47 ++-- src/lib/analytics/parseUserAgent.ts | 34 +++ src/lib/e2ee/crypto.ts | 67 +++++ src/lib/e2ee/dm.ts | 38 ++- src/lib/e2ee/index.ts | 10 +- src/lib/e2ee/keys.ts | 125 +++++++++- src/lib/pwaConfig.ts | 4 + src/lib/validation/username.ts | 2 +- src/locales/en/common.json | 20 +- src/locales/fa/common.json | 20 +- src/providers/ChatSocketProvider.tsx | 20 +- 28 files changed, 872 insertions(+), 88 deletions(-) create mode 100644 public/offline.html create mode 100644 src/components/AnalyticsTracker.tsx create mode 100644 src/components/chat/E2eeIdentityGate.tsx create mode 100644 src/lib/analytics/parseUserAgent.ts diff --git a/public/offline.html b/public/offline.html new file mode 100644 index 0000000..6b2c8c1 --- /dev/null +++ b/public/offline.html @@ -0,0 +1,50 @@ + + +
+ + +به نظر میرسد به اینترنت وصل نیستید. اتصال خود را بررسی کنید و دوباره تلاش کنید.
+ + + diff --git a/public/service-worker.js b/public/service-worker.js index ff777cb..2a172c4 100644 --- a/public/service-worker.js +++ b/public/service-worker.js @@ -43,10 +43,11 @@ self.addEventListener("notificationclick", (event) => { ); }); -const CACHE_NAME = "pwa-cache-v11"; +const CACHE_NAME = "pwa-cache-v12"; const PRECACHE_URLS = [ "/", + "/offline.html", "/manifest.webmanifest", "/manifest.json", "/images/icons/192x192.png", @@ -82,7 +83,9 @@ self.addEventListener("fetch", (event) => { const url = new URL(event.request.url); if (event.request.mode === "navigate") { - event.respondWith(fetch(event.request)); + event.respondWith( + fetch(event.request).catch(() => caches.match("/offline.html")) + ); return; } diff --git a/src/app/(projects)/academy/[id]/[title]/CourseClient.tsx b/src/app/(projects)/academy/[id]/[title]/CourseClient.tsx index ac39a17..2eddca2 100644 --- a/src/app/(projects)/academy/[id]/[title]/CourseClient.tsx +++ b/src/app/(projects)/academy/[id]/[title]/CourseClient.tsx @@ -655,6 +655,7 @@ useEffect(() => { key={selectedVideo?._id || ""} className="w-full aspect-video" controls + playsInline controlsList="nodownload noplaybackrate" onContextMenu={preventDownload} onKeyDown={preventDownload} diff --git a/src/app/about-us/page.tsx b/src/app/about-us/page.tsx index 6e29c34..7c9b7b0 100644 --- a/src/app/about-us/page.tsx +++ b/src/app/about-us/page.tsx @@ -5,9 +5,17 @@ import RoundedDiv from "@/components/elements/RoundedDiv"; import EditPageHeader from "@/components/settings/EditPageHeader"; import Link from "next/link"; import { useTranslation } from "react-i18next"; +import { isAndroidDevice } from "@/lib/pwa/install"; +import { buildStorageUrl } from "@/components/main/BaseUrl"; +import { ANDROID_APP_VERSION } from "@/lib/pwaConfig"; + +// عین PwaInstallPrompt.tsx: مسیر مستقیمِ فایل APK که بکاند بدون روتِ جدید سرو میکنه +const ANDROID_APK_URL = buildStorageUrl("/downloads/modstagram.apk"); function AboutUs() { const { t } = useTranslation("common"); + // فقط اندروید — طبق خواستهی صریح کاربر توی iOS این دکمه نمایش داده نشه + const isAndroid = isAndroidDevice(); return (