diff --git a/src/components/posts/ReelsPostActions.tsx b/src/components/posts/ReelsPostActions.tsx
index 95b43fc..0fded7a 100644
--- a/src/components/posts/ReelsPostActions.tsx
+++ b/src/components/posts/ReelsPostActions.tsx
@@ -447,7 +447,9 @@ export default function ReelsPostActions({
className={cn("drop-shadow-lg invert", expanded && "opacity-80")}
/>
- {optionsMenu}
+ {/* طبق خواستهی کاربر: با جمعکردن آیکونها فقط خودِ دکمهی جمعکردن باقی
+ بمونه، پس منوی سهنقطه هم باید مثل بقیهی اکشنها مخفی بشه */}
+ {expanded ? optionsMenu : null}
)}
>
diff --git a/src/components/posts/ReelsPostOptionsMenu.tsx b/src/components/posts/ReelsPostOptionsMenu.tsx
index 4bca92b..5902a79 100644
--- a/src/components/posts/ReelsPostOptionsMenu.tsx
+++ b/src/components/posts/ReelsPostOptionsMenu.tsx
@@ -13,6 +13,11 @@ import { useTranslation } from "react-i18next";
import { useAppLanguage } from "@/contexts/LanguageProvider";
import { useQueryClient } from "@tanstack/react-query";
import { useRouter } from "next/navigation";
+import { cn } from "@/lib/utils";
+import {
+ useExploreReelsUi,
+ type PlaybackSpeed,
+} from "@/contexts/ExploreReelsUiContext";
const REPORT_REASON_IDS = [
"inappropriate",
@@ -22,6 +27,8 @@ const REPORT_REASON_IDS = [
"other",
] as const;
+const SPEED_OPTIONS: PlaybackSpeed[] = [0.5, 1, 1.5, 2];
+
type Props = {
postData: Post;
isOwnPost: boolean;
@@ -42,6 +49,7 @@ export default function ReelsPostOptionsMenu({
const queryClient = useQueryClient();
const router = useRouter();
const canEdit = isOwnPost;
+ const exploreUi = useExploreReelsUi();
const [open, setOpen] = useState(false);
const [reportOpen, setReportOpen] = useState(false);
const [analyticsOpen, setAnalyticsOpen] = useState(false);
@@ -193,6 +201,55 @@ export default function ReelsPostOptionsMenu({
count: viewCount.toLocaleString(numberLocale),
})}
+ {exploreUi ? (
+ <>
+
+ {t("posts.autoScrollLabel")}
+
+
+
+
{t("posts.playbackSpeedLabel")}
+
+ {SPEED_OPTIONS.map((option) => {
+ const active = exploreUi.playbackSpeed === option;
+ return (
+
+ );
+ })}
+
+
+ >
+ ) : null}
{isOwnPost ? (
<>
{canEdit ? (
diff --git a/src/contexts/ExploreReelsUiContext.tsx b/src/contexts/ExploreReelsUiContext.tsx
index 304e99a..9bc456f 100644
--- a/src/contexts/ExploreReelsUiContext.tsx
+++ b/src/contexts/ExploreReelsUiContext.tsx
@@ -2,11 +2,18 @@
import React, { createContext, useContext, useState } from "react";
+export type PlaybackSpeed = 0.5 | 1 | 1.5 | 2;
+
type ExploreReelsUiContextValue = {
chromeHidden: boolean;
setChromeHidden: (hidden: boolean) => void;
actionsExpanded: boolean;
setActionsExpanded: (expanded: boolean) => void;
+ /** پیشفرض غیرفعال، طبق خواستهی کاربر */
+ autoScrollEnabled: boolean;
+ setAutoScrollEnabled: (enabled: boolean) => void;
+ playbackSpeed: PlaybackSpeed;
+ setPlaybackSpeed: (speed: PlaybackSpeed) => void;
};
const ExploreReelsUiContext = createContext(
@@ -20,6 +27,8 @@ export function ExploreReelsUiProvider({
}) {
const [chromeHidden, setChromeHidden] = useState(false);
const [actionsExpanded, setActionsExpanded] = useState(true);
+ const [autoScrollEnabled, setAutoScrollEnabled] = useState(false);
+ const [playbackSpeed, setPlaybackSpeed] = useState(1);
return (
{children}
diff --git a/src/locales/en/common.json b/src/locales/en/common.json
index 328ed66..05c0a47 100644
--- a/src/locales/en/common.json
+++ b/src/locales/en/common.json
@@ -1182,6 +1182,8 @@
"commentError": "Could not post comment",
"reportPost": "Report post",
"postViews": "Post views — {{count}}",
+ "autoScrollLabel": "Auto-scroll",
+ "playbackSpeedLabel": "Playback speed",
"viewAnalytics": "View insights",
"pinPost": "Pin post",
"unpinPost": "Unpin post",
diff --git a/src/locales/fa/common.json b/src/locales/fa/common.json
index 3380da9..cff59aa 100644
--- a/src/locales/fa/common.json
+++ b/src/locales/fa/common.json
@@ -1182,6 +1182,8 @@
"commentError": "خطا در ثبت نظر",
"reportPost": "گزارش پست",
"postViews": "بازدید پست — {{count}}",
+ "autoScrollLabel": "پیمایش خودکار",
+ "playbackSpeedLabel": "سرعت پخش ویدیو",
"viewAnalytics": "دیدن اطلاعات آماری",
"pinPost": "پین کردن پست",
"unpinPost": "برداشتن پین",