Đồng bộ dữ liệu
Cơ chế đồng bộ
KFilms sử dụng Firestore (cơ sở dữ liệu đám mây của Firebase) để đồng bộ dữ liệu giữa các thiết bị.
📸 Hình: Sơ đồ luồng đồng bộ — Điện thoại ↔ Firestore ↔ TV/Windows
Nguyên tắc:
- Offline-first: Dữ liệu local (SharedPreferences) là nguồn chính — app hoạt động đầy đủ khi không có mạng
- Firestore là bản sao lưu (mirror): Dữ liệu được đẩy lên đám mây để đồng bộ sang thiết bị khác
- Best-effort: Nếu đồng bộ thất bại (mất mạng, lỗi server), app không bị block — thao tác vẫn diễn ra bình thường
Dữ liệu được đồng bộ
| Dữ liệu | Mô tả | Ghi chú |
|---|---|---|
| 📁 Danh sách phim (Files) | Các file/phim đã thêm | Push khi thêm/xoá |
| 📂 Nhóm phim bộ (Groups) | Series TV đã thêm | Push khi thêm/xoá |
| 🔑 Fshare credentials | Email/mật khẩu Fshare (tuỳ chọn) | Đồng bộ nếu lưu |
| 🔑 PikPak credentials | Email/mật khẩu PikPak (tuỳ chọn) | Đồng bộ nếu lưu |
| 🔑 WebDAV credentials | URL/tài khoản WebDAV (tuỳ chọn) | Đồng bộ nếu lưu |
Lưu ý: Tiến độ xem (vị trí đang xem dở) chỉ lưu trên thiết bị local, không đồng bộ qua đám mây.
Khi nào đồng bộ xảy ra
| Sự kiện | Hành động |
|---|---|
| Đăng nhập thành công | Kéo (Pull) dữ liệu từ Firestore về máy |
| Thêm phim / nhóm phim mới | Đẩy (Push) lên Firestore |
| Xoá phim / nhóm phim | Đẩy (Push) lên Firestore |
| Đăng xuất | Xoá token đồng bộ (không ảnh hưởng dữ liệu local) |
Lịch sử đăng nhập
KFilms ghi lại lịch sử đăng nhập của bạn trên các thiết bị:
- Vào Settings → Lịch sử đăng nhập
- Hiển thị tối đa 5 thiết bị gần nhất
- Mỗi thiết bị hiển thị: tên app, nền tảng, thời gian hoạt động gần nhất
Hoạt động offline
| Tình huống | Hoạt động |
|---|---|
| ✅ Có mạng, có local copy | Phát file local |
| ✅ Có mạng, không có local copy | Stream từ server (cần Pro) |
| ❌ Mất mạng, có local copy | Phát file local bình thường |
| ❌ Mất mạng, không có local copy | Hiển thị lỗi: "Cần kết nối để xem" |