Thách thức kỹ thuật
Hai phần thực sự phức tạp trong những gì tôi phụ trách. Thứ nhất, bảng công việc cần chức năng kéo-thả để sắp xếp lại cả công việc và cột mà vẫn giữ nhất quán với dữ liệu — vị trí của một thẻ hoặc cột trên giao diện phải khớp với thứ tự đã lưu sau mỗi lần di chuyển. Thứ hai, ứng dụng kết hợp hai backend — một lớp dựa trên Firebase cho các tính năng thời gian thực như hội thoại, và một REST API riêng với cơ chế xác thực tự làm mới token — việc giữ đồng bộ cả hai từ lớp giao diện đòi hỏi sự cẩn thận.
Cách tôi tiếp cận
Với bảng công việc, chức năng kéo-thả được xây dựng trên một thành phần danh sách kéo-thả chuyên dụng, cùng với adapter và view model riêng của ứng dụng để giữ vị trí, danh mục và bảng của từng thẻ/cột nhất quán khi người dùng sắp xếp lại. Với cấu trúc hai backend, lớp dữ liệu của ứng dụng tách riêng các tính năng thời gian thực dựa trên Firebase (hội thoại, trạng thái hoạt động) khỏi các tính năng dựa trên REST, thông qua một pattern repository chung, để phần còn lại của ứng dụng có thể dùng chung lớp view model bất kể nguồn dữ liệu nào.


