Skip to content

2.0.0

Latest

Choose a tag to compare

@hayato-shino05 hayato-shino05 released this 25 Nov 22:58
· 5 commits to main since this release
0ca4ca3

v2.0.0 – Tìm kiếm thông minh, cache sâu hơn, nhắc giờ Lễ

Tính năng mới

  • Quản lý API key thông minh

    • Đọc nhiều YouTube API key từ Firebase, tự động luân phiên khi key hiện tại hết lượt.
    • Ghi lại trạng thái key đã hết quota trong AsyncStorage, tự reset về sạch vào 0h giờ Việt Nam mỗi ngày.
    • Khi tất cả key đều hết, app hiển thị thông báo rõ ràng, hướng dẫn người dùng chờ sang ngày hôm sau.
  • Danh mục nội dung (Category) rõ ràng

    • Thêm thanh chọn nhanh:
      • Thánh Lễ
      • Doraemon
      • Nhạc Thiếu Nhi
    • Mỗi danh mục có logic tìm kiếm và giới hạn kết quả riêng, tránh tràn kết quả không phù hợp.
  • Tối ưu tìm kiếm và cache kết quả

    • Hook [useDebounce] giúp chống spam API khi người dùng gõ tìm kiếm liên tục.
    • Service SearchCache:
      • Doraemon và Nhạc Thiếu Nhi: cache tới 7 ngày để giảm tối đa số lần gọi API.
      • Các từ khóa khác: cache tạm 10 phút.
    • Thánh Lễ có cơ chế cache riêng theo từng ngày:
      • Chỉ lưu các video Thánh Lễ ổn định (không live, không sắp chiếu), tối đa 20 video mỗi ngày.
      • Dùng cache làm fallback khi hết lượt tìm kiếm hoặc lỗi mạng, vẫn hiển thị được danh sách Thánh Lễ gần đây.
  • Lọc kết quả YouTube chuẩn hơn

    • Doraemon:
      • Chỉ lấy video từ kênh phù hợp (ví dụ Pops Kids) và có thời lượng đủ dài.
    • Nhạc Thiếu Nhi:
      • Ưu tiên sắp xếp theo lượt xem, lọc các video quá ngắn.
    • Thánh Lễ:
      • Ưu tiên video có ngày hôm nay trong tiêu đề/mô tả và đủ thời lượng tối thiểu.
      • Sắp xếp thứ tự: đang phát trực tiếp → sắp diễn ra → video thường.
  • Nhắc giờ Lễ (Local Notification)

    • Bật/tắt nhắc giờ Lễ hằng ngày.
    • Chọn giờ và phút nhắc, có thể chỉnh tăng/giảm nhanh theo bước 1 giờ / 15 phút.
    • Dùng expo-notifications, lưu cấu hình vào AsyncStorage, tự tạo notification channel trên Android.
    • Chỉ hoạt động trên thiết bị thật, có xử lý trường hợp người dùng chưa cấp quyền thông báo.
  • Cập nhật OTA (Over‑the‑Air)

    • Service UpdateService + component [UpdatePrompt]
      • Tự kiểm tra bản cập nhật mới khi người dùng mở app (bỏ qua trong môi trường DEV).
      • Khi có bản mới, hiện icon và modal “Cập nhật ngay”, tải về và reload app qua expo-updates.
    • Giảm nhu cầu phải cài lại app mỗi lần sửa lỗi nhỏ.
  • Thống kê sử dụng (Analytics đơn giản)

    • AnalyticsService ghi lại sự kiện cơ bản:
      • Mở app,
      • Tìm kiếm,
      • Mở video.
    • Gửi dữ liệu dạng sự kiện thô lên Firebase để sau này tổng hợp thống kê.

Cải thiện giao diện và trải nghiệm

  • Màn hình tìm kiếm chính

    • Thanh category rõ ràng, chạm 1 lần là đổi loại nội dung và tìm lại.
    • Thông báo trạng thái chi tiết hơn:
      • Đang khởi tạo,
      • Đang tìm kiếm,
      • Hết lượt tìm kiếm hôm nay (kèm số video từ cache),
      • Lỗi kết nối nhưng vẫn dùng được dữ liệu đã lưu trong ngày.
  • Thẻ video (VideoCard)

    • Bố cục lại ba phần: ảnh thumbnail → thông tin → thanh hành động.
    • Hiển thị rõ:
      • Tiêu đề,
      • Kênh,
      • Trạng thái video (Live, Sắp diễn ra, Thời lượng).
    • Nút Yêu thích và Chia sẻ gọn, dễ bấm, có hiệu ứng nhấn.
  • Trang Khám Phá (Explore)

    • Viết lại nội dung giới thiệu:
      • Nhấn mạnh app chỉ là công cụ trung gian mở YouTube, không tự phát video bên trong.
      • Giải thích cơ chế lưu/lọc nội dung theo thời gian bằng ngôn ngữ dễ hiểu, tránh thuật ngữ kỹ thuật.