diff --git a/Riot/Assets/Images.xcassets/PersonalNotes/personal_notes_avatar.imageset/BWI-noticeboard.png b/Riot/Assets/Images.xcassets/PersonalNotes/personal_notes_avatar.imageset/BWI-noticeboard.png new file mode 100644 index 000000000..7d993a44d Binary files /dev/null and b/Riot/Assets/Images.xcassets/PersonalNotes/personal_notes_avatar.imageset/BWI-noticeboard.png differ diff --git a/Riot/Assets/Images.xcassets/PersonalNotes/personal_notes_avatar.imageset/Contents.json b/Riot/Assets/Images.xcassets/PersonalNotes/personal_notes_avatar.imageset/Contents.json index 87c46ad3b..4c8d4000f 100644 --- a/Riot/Assets/Images.xcassets/PersonalNotes/personal_notes_avatar.imageset/Contents.json +++ b/Riot/Assets/Images.xcassets/PersonalNotes/personal_notes_avatar.imageset/Contents.json @@ -9,7 +9,7 @@ "scale" : "2x" }, { - "filename" : "personal_notes-1.jpg", + "filename" : "BWI-noticeboard.png", "idiom" : "universal", "scale" : "3x" } diff --git a/Riot/Assets/Images.xcassets/PersonalNotes/personal_notes_avatar.imageset/personal_notes-1.jpg b/Riot/Assets/Images.xcassets/PersonalNotes/personal_notes_avatar.imageset/personal_notes-1.jpg deleted file mode 100644 index 77b011135..000000000 Binary files a/Riot/Assets/Images.xcassets/PersonalNotes/personal_notes_avatar.imageset/personal_notes-1.jpg and /dev/null differ diff --git a/Riot/Modules/Common/Recents/Views/RecentTableViewCell.m b/Riot/Modules/Common/Recents/Views/RecentTableViewCell.m index dc68de946..0b33b7503 100644 --- a/Riot/Modules/Common/Recents/Views/RecentTableViewCell.m +++ b/Riot/Modules/Common/Recents/Views/RecentTableViewCell.m @@ -125,10 +125,16 @@ self.roomTitle.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; } - [self.roomAvatar vc_setRoomAvatarImageWith:roomCellData.avatarUrl - roomId:roomCellData.roomIdentifier - displayName:roomCellData.roomDisplayname - mediaManager:roomCellData.mxSession.mediaManager]; + // bwi: if the room is a personal notes room a local image is used as room avatar + PersonalNotesDefaultService *service = [[PersonalNotesDefaultService alloc] initWithMxSession:roomCellData.mxSession]; + if (BwiBuildSettings.bwiUseCustomPersonalNotesAvatar && [roomCellData.roomIdentifier isEqualToString:[service personalNotesRoomId]]) { + self.roomAvatar.image = [UIImage imageNamed:[service avatarImageUrl]]; + } else { + [self.roomAvatar vc_setRoomAvatarImageWith:roomCellData.avatarUrl + roomId:roomCellData.roomIdentifier + displayName:roomCellData.roomDisplayname + mediaManager:roomCellData.mxSession.mediaManager]; + } if (roomCellData.directUserId) { diff --git a/Riot/Modules/Room/RoomInfo/RoomInfoList/Views/RoomInfoBasicView.swift b/Riot/Modules/Room/RoomInfo/RoomInfoList/Views/RoomInfoBasicView.swift index 5d32a8918..b8a94e4f6 100644 --- a/Riot/Modules/Room/RoomInfo/RoomInfoList/Views/RoomInfoBasicView.swift +++ b/Riot/Modules/Room/RoomInfo/RoomInfoList/Views/RoomInfoBasicView.swift @@ -78,19 +78,31 @@ class RoomInfoBasicView: UIView { func configure(withViewData viewData: RoomInfoBasicViewData) { let avatarImage = AvatarGenerator.generateAvatar(forMatrixItem: viewData.roomId, withDisplayName: viewData.roomDisplayName) - if let avatarUrl = viewData.avatarUrl { - avatarImageView.enableInMemoryCache = true - - avatarImageView.setImageURI(avatarUrl, - withType: nil, - andImageOrientation: .up, - toFitViewSize: avatarImageView.frame.size, - with: MXThumbnailingMethodCrop, - previewImage: avatarImage, - mediaManager: viewData.mediaManager) - } else { - avatarImageView.image = avatarImage + if BwiBuildSettings.bwiUseCustomPersonalNotesAvatar { + if let session = AppDelegate.theDelegate().mxSessions.first as? MXSession { + let service = PersonalNotesDefaultService(mxSession: session) + if let personalNotesRoomId = service.personalNotesRoomId(), personalNotesRoomId == viewData.roomId { + avatarImageView.image = UIImage(named: service.avatarImageUrl()) + } + } } + + if avatarImageView.image == nil { + if let avatarUrl = viewData.avatarUrl { + avatarImageView.enableInMemoryCache = true + + avatarImageView.setImageURI(avatarUrl, + withType: nil, + andImageOrientation: .up, + toFitViewSize: avatarImageView.frame.size, + with: MXThumbnailingMethodCrop, + previewImage: avatarImage, + mediaManager: viewData.mediaManager) + } else { + avatarImageView.image = avatarImage + } + } + badgeImageView.image = viewData.encryptionImage roomNameLabel.text = viewData.roomDisplayName roomAddressLabel.text = viewData.mainRoomAlias diff --git a/Riot/Modules/Room/RoomViewController.m b/Riot/Modules/Room/RoomViewController.m index 2f25a2dca..3d2a45a9f 100644 --- a/Riot/Modules/Room/RoomViewController.m +++ b/Riot/Modules/Room/RoomViewController.m @@ -1862,11 +1862,18 @@ static CGSize kThreadListBarButtonItemImageSize; MXKImageView *userPictureView = ((RoomTitleView*)self.titleView).pictureView; // Set user picture in input toolbar - if (userPictureView) - { - [self.roomDataSource.room.summary setRoomAvatarImageIn:userPictureView]; + // bwi: if the room is a personal notes room a local image is used as room avatar + if (userPictureView) { + if (BwiBuildSettings.bwiUseCustomPersonalNotesAvatar + && [self.roomDataSource.room isPersonalNotesRoom]) { + + PersonalNotesDefaultService *service = [PersonalNotesDefaultService service:self.mainSession]; + userPictureView.image = [UIImage imageNamed:[service avatarImageUrl]]; + } else { + [self.roomDataSource.room.summary setRoomAvatarImageIn:userPictureView]; + } } - + [self refreshMissedDiscussionsCount:YES]; if (RiotSettings.shared.enableThreads) diff --git a/Riot/Modules/Room/Settings/RoomSettingsViewController.m b/Riot/Modules/Room/Settings/RoomSettingsViewController.m index f94649582..7cf3741f1 100644 --- a/Riot/Modules/Room/Settings/RoomSettingsViewController.m +++ b/Riot/Modules/Room/Settings/RoomSettingsViewController.m @@ -2397,10 +2397,19 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti } else { - [mxRoom.summary setRoomAvatarImageIn:roomPhotoCell.mxkImageView]; - - roomPhotoCell.userInteractionEnabled = (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomAvatar]); - roomPhotoCell.mxkImageView.alpha = roomPhotoCell.userInteractionEnabled ? 1.0f : 0.5f; + // bwi if the room is a personal notes room use a local image + if (BwiBuildSettings.bwiUseCustomPersonalNotesAvatar && [mxRoom isPersonalNotesRoom] ) { + PersonalNotesDefaultService *service = [[PersonalNotesDefaultService alloc] initWithMxSession:self.mainSession]; + roomPhotoCell.mxkImageView.image = [UIImage imageNamed:service.avatarImageUrl]; + + roomPhotoCell.userInteractionEnabled = false; + roomPhotoCell.mxkImageView.alpha = 0.5f; + } else { + [mxRoom.summary setRoomAvatarImageIn:roomPhotoCell.mxkImageView]; + + roomPhotoCell.userInteractionEnabled = (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomAvatar]); + roomPhotoCell.mxkImageView.alpha = roomPhotoCell.userInteractionEnabled ? 1.0f : 0.5f; + } } cell = roomPhotoCell; diff --git a/Riot/Modules/TabBar/MasterTabBarController.m b/Riot/Modules/TabBar/MasterTabBarController.m index a3864a5e8..0a5b20678 100644 --- a/Riot/Modules/TabBar/MasterTabBarController.m +++ b/Riot/Modules/TabBar/MasterTabBarController.m @@ -1217,6 +1217,19 @@ if (BuildSettings.bwiPersonalNotesRoom) { [service createPersonalNotesRoomIfNeeded]; } + if (BwiBuildSettings.bwiUseCustomPersonalNotesAvatar) { + [service removeOldAvatars]; + + MXSession *mainSession = mxSessionArray.firstObject; + + if (mainSession) { + for (MXRoom* room in [mainSession roomsWithTag:PersonalNotesDefaultService.roomTag]) { + if ([room.summary.avatar length] > 0) { + [room setAvatar:@"" success:nil failure:nil]; + } + } + } + } } #pragma mark - bwi matomo tracking diff --git a/bwi/BwiBuildSettings.swift b/bwi/BwiBuildSettings.swift index dd8a71082..307e39f14 100644 --- a/bwi/BwiBuildSettings.swift +++ b/bwi/BwiBuildSettings.swift @@ -71,4 +71,6 @@ final class BwiBuildSettings: NSObject { static let bwiShowRoomCreationSectionFooter = false static let bwiAutoCreateAliasOnRoomCreation = true + + static let bwiUseCustomPersonalNotesAvatar = true } diff --git a/bwi/PersonalNotes/PersonalNotesDefaultService.swift b/bwi/PersonalNotes/PersonalNotesDefaultService.swift index 977ef5d7f..438f22e80 100644 --- a/bwi/PersonalNotes/PersonalNotesDefaultService.swift +++ b/bwi/PersonalNotes/PersonalNotesDefaultService.swift @@ -146,4 +146,8 @@ extension PersonalNotesDefaultService : PersonalNotesService { func resetPersonalNotesRoom() { session.setAccountData([:], forType: AccountDataTypes.personalNotes, success: nil, failure: nil) } + + func avatarImageUrl() -> String { + return self.defaultAvatar + } } diff --git a/bwi/PersonalNotes/PersonalNotesService.swift b/bwi/PersonalNotes/PersonalNotesService.swift index 76db931f5..64a92d80f 100644 --- a/bwi/PersonalNotes/PersonalNotesService.swift +++ b/bwi/PersonalNotes/PersonalNotesService.swift @@ -22,4 +22,6 @@ protocol PersonalNotesService { func createPersonalNotesRoomIfNeeded() func resetPersonalNotesRoom() + + func avatarImageUrl() -> String }