Cached avatar support (from Rust) (#633)

* loading a cached avatar at first, and then actually doing the request so that the avatar can still be displayed without connection

* improved the code

* fix + changelog

* policy on how to fetch the avatar url added

* code improvements

* addressed al PR comments

* improved the error handling

* improved the async task code

* fixed a typo

* fixed another typo
This commit is contained in:
Mauro
2023-03-08 18:50:06 +01:00
committed by GitHub
parent c67c4e362e
commit fb27efee10
10 changed files with 62 additions and 31 deletions
@@ -24,7 +24,6 @@ enum ClientProxyCallback {
}
enum ClientProxyError: Error {
case failedRetrievingAvatarURL
case failedRetrievingDisplayName
case failedRetrievingAccountData
case failedSettingAccountData
@@ -72,6 +71,8 @@ protocol ClientProxyProtocol: AnyObject, MediaLoaderProtocol {
var homeserver: String { get }
var avatarURLPublisher: AnyPublisher<URL?, Never> { get }
var restorationToken: RestorationToken? { get }
var visibleRoomsSummaryProvider: RoomSummaryProviderProtocol? { get }
@@ -85,9 +86,9 @@ protocol ClientProxyProtocol: AnyObject, MediaLoaderProtocol {
func roomForIdentifier(_ identifier: String) async -> RoomProxyProtocol?
func loadUserDisplayName() async -> Result<String, ClientProxyError>
func loadUserAvatarURL() async -> Result<URL, ClientProxyError>
func loadUserAvatarURL() async
func accountDataEvent<Content: Decodable>(type: String) async -> Result<Content?, ClientProxyError>
func setAccountData<Content: Encodable>(content: Content, type: String) async -> Result<Void, ClientProxyError>