diff --git a/src/context/page.context.tsx b/src/context/page.context.tsx index b594e20c..5b5e66ea 100644 --- a/src/context/page.context.tsx +++ b/src/context/page.context.tsx @@ -1,3 +1,4 @@ +import Analytics from '@/analytics' import { listenEvent } from '@/common/utils/call-event' import type React from 'react' import { createContext, useContext, useState } from 'react' @@ -19,6 +20,7 @@ export function PageProvider({ children }: { children: React.ReactNode }) { useEffect(() => { const event = listenEvent('go_to_page', (p) => { setPage(p) + Analytics.event(`goto_page_${p}`) }) return () => { event() diff --git a/src/layouts/mini-apps/mini-apps.layout.tsx b/src/layouts/mini-apps/mini-apps.layout.tsx index c8218efd..10001485 100644 --- a/src/layouts/mini-apps/mini-apps.layout.tsx +++ b/src/layouts/mini-apps/mini-apps.layout.tsx @@ -27,6 +27,8 @@ export function MiniAppsLayout() { const loadMoreRef = useRef(null) useEffect(() => { + Analytics.event('mini_apps_page') + const event = listenEvent('toggle_miniApp_fullScreen', (newState) => { setIsFullScreen(newState) }) diff --git a/src/layouts/navbar/navbar.layout.tsx b/src/layouts/navbar/navbar.layout.tsx index 018bea2d..59441118 100644 --- a/src/layouts/navbar/navbar.layout.tsx +++ b/src/layouts/navbar/navbar.layout.tsx @@ -157,7 +157,7 @@ export function NavbarLayout(): JSX.Element { )}
onClickToExplorer()} > -
+
@@ -89,7 +89,7 @@ export function BrowserBookmark() { onClick={handleTogglePopover} >
{ + updateSetting('isOptimalMode', !isOptimalMode) + Analytics.event('toggle_optimalMode') + } + return (
@@ -28,7 +35,7 @@ export function GeneralSettingTab() {

updateSetting('isOptimalMode', !isOptimalMode)} + onToggle={() => toggleOptimal()} />
diff --git a/src/layouts/widgets/habit/components/habit-empty.tsx b/src/layouts/widgets/habit/components/habit-empty.tsx new file mode 100644 index 00000000..c4ae935a --- /dev/null +++ b/src/layouts/widgets/habit/components/habit-empty.tsx @@ -0,0 +1,26 @@ +export function HabitEmpty() { + return ( +
+
+ بدون عادت +
+ +

+ عادت‌های خوب رو از اینجا شروع کن 🌱 +

+ +

+ اولین عادتت رو اضافه کن +
+ مثلا: +
💧 نوشیدن ۸ لیوان آب +
📖 ۲۰ دقیقه مطالعه +
🚶 ۳۰ دقیقه پیاده‌روی +

+
+ ) +} diff --git a/src/layouts/widgets/habit/habits.layout.tsx b/src/layouts/widgets/habit/habits.layout.tsx index 7b732940..c1d0a4e0 100644 --- a/src/layouts/widgets/habit/habits.layout.tsx +++ b/src/layouts/widgets/habit/habits.layout.tsx @@ -18,6 +18,7 @@ import { HabitItem } from './components/item/habit.item' import { callEvent } from '@/common/utils/call-event' import { HabitItemSkeleton } from './components/item/habit-item.skeleton' import { Icon } from '@/src/icons' +import { HabitEmpty } from './components/habit-empty' export function HabitsContent() { const { isAuthenticated } = useAuth() @@ -92,7 +93,7 @@ export function HabitsContent() { } const isWaiting = isLoading || isRefetching - + const isEmpty = (!isLoading && data?.items?.length === 0) || !isAuthenticated return (
@@ -122,33 +123,19 @@ export function HabitsContent() {
-
+
{isLoading ? (
{[...Array(4)].map((_, i) => ( ))}
- ) : data?.items?.length === 0 ? ( -
-
- بدون عادت -
-

- هیچ عادتی برای نمایش وجود ندارد -

-

- یک عادت جدید اضافه کن تا شروع کنی -

-
+ ) : isEmpty ? ( + ) : ( -
+
{data?.items?.map((habit) => ( +
+ بدون یادداشت +
+ +

اینجا هنوز سفیده...

+ +

+ اولین یادداشتت رو بنویس. +
+ مثلا: +
💡 ایده‌ی پروژه +
🛒 لیست خرید +
+ یه جمله برای خودت واسه بعدا +

+
+ ) +} diff --git a/src/layouts/widgets/notes/notes.layout.tsx b/src/layouts/widgets/notes/notes.layout.tsx index b2d9180d..49ad2232 100644 --- a/src/layouts/widgets/notes/notes.layout.tsx +++ b/src/layouts/widgets/notes/notes.layout.tsx @@ -4,6 +4,7 @@ import { NotesProvider, useNotes } from '@/context/notes.context' import { NoteEditor } from './components/note-editor' import { NoteItem } from './components/note-item' import { NoteNavigation } from './components/note-navigation' +import { NoteEmpty } from './components/note-empty' function NotesContent() { const { notes, activeNoteId } = useNotes() @@ -12,23 +13,7 @@ function NotesContent() { const activeNote = notes.find((note) => note.id === activeNoteId) if (!activeNote && !notes.length) { - return ( -
-
- بدون عادت -
-

یادداشتی پیدا نشد

- - منتظر چی هستی؟ شروع کن به نوشتن! - -
- ) + return } if (!activeNote) { diff --git a/src/layouts/widgets/todos/components/todo-empty.tsx b/src/layouts/widgets/todos/components/todo-empty.tsx new file mode 100644 index 00000000..6fbeded0 --- /dev/null +++ b/src/layouts/widgets/todos/components/todo-empty.tsx @@ -0,0 +1,25 @@ +export function TodosEmpty() { + return ( +
+
+ بدون تسک +
+ +

+ اینجا فعلا خیلی آرومه... +

+ +

+ هنوز هیچ تسکی نداری +
+ وقتشه یه چیزی اضافه کنی، مثلا: +
🛒 خرید خونه +
☕ یه استراحت کوتاه +

+
+ ) +} diff --git a/src/layouts/widgets/todos/todos.tsx b/src/layouts/widgets/todos/todos.tsx index 5d86a844..54c392b3 100644 --- a/src/layouts/widgets/todos/todos.tsx +++ b/src/layouts/widgets/todos/todos.tsx @@ -13,6 +13,7 @@ import Tooltip from '@/components/toolTip' import { useGetTodos } from '@/services/hooks/todo/get-todos.hook' import { TodoItem } from './todo.item' import { Icon } from '@/src/icons' +import { TodosEmpty } from './components/todo-empty' const filterOptions = [ { value: 'all', label: 'همه' }, @@ -257,9 +258,7 @@ export function TodosLayout() {
-
+
{isLoading ? (
{[...Array(5)].map((_, i) => ( @@ -269,7 +268,9 @@ export function TodosLayout() { ) : sortedTodos.length === 0 ? ( ) : ( -
+
{sortedTodos.map((todo) => ( -
- بدون عادت -
-

- هیچ تسکی برای نمایش وجود ندارد -

-

- یک تسک جدید اضافه کنید یا فیلترها را تغییر دهید -

-
- ) -} - export function TodoSkeleton() { return (