mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 15:22:39 +00:00
Improved cell rendering
This commit is contained in:
parent
90fee2c11d
commit
d5ba3ecc29
7 changed files with 58 additions and 62 deletions
|
@ -33,7 +33,7 @@
|
|||
*/
|
||||
- (void)render:(MXRoom *)room;
|
||||
|
||||
- (void)renderWithSummary:(MXRoomSummary *)roomSummary;
|
||||
- (void)renderWithSummary:(MXRoomSummary *)roomSummary restClient:(MXRestClient *)restClient;
|
||||
|
||||
/**
|
||||
Get the cell height.
|
||||
|
|
|
@ -59,9 +59,9 @@
|
|||
self.encryptedRoomIcon.hidden = !room.state.isEncrypted;
|
||||
}
|
||||
|
||||
- (void)renderWithSummary:(MXRoomSummary *)roomSummary
|
||||
- (void)renderWithSummary:(MXRoomSummary *)roomSummary restClient:(MXRestClient *)restClient
|
||||
{
|
||||
//[self.avatarImageView setImageURL: urlOfContentThumbnail:roomAvatarUrl toFitViewSize:self.avatarImageView.frame.size withMethod:MXThumbnailingMethodCrop] withType:nil andImageOrientation:UIImageOrientationUp previewImage:nil];
|
||||
[self.avatarImageView setImageURL:[restClient urlOfContentThumbnail:roomSummary.avatar toFitViewSize:self.avatarImageView.frame.size withMethod:MXThumbnailingMethodCrop] withType:nil andImageOrientation:UIImageOrientationUp previewImage:nil];
|
||||
|
||||
self.titleLabel.text = roomSummary.displayname;
|
||||
|
||||
|
|
|
@ -29,13 +29,13 @@
|
|||
<key>NSExtensionActivationRule</key>
|
||||
<dict>
|
||||
<key>NSExtensionActivationSupportsMovieWithMaxCount</key>
|
||||
<integer>0</integer>
|
||||
<integer>1</integer>
|
||||
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
|
||||
<integer>5</integer>
|
||||
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
|
||||
<integer>0</integer>
|
||||
<integer>1</integer>
|
||||
<key>NSExtensionActivationSupportsText</key>
|
||||
<false/>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>NSExtensionPointIdentifier</key>
|
||||
|
|
|
@ -22,16 +22,11 @@ typedef NS_ENUM(NSInteger, ShareDataSourceMode)
|
|||
DataSourceModeRooms
|
||||
};
|
||||
|
||||
@protocol ShareDataSourceDelegate <NSObject>
|
||||
|
||||
- (void)refreshRooms;
|
||||
|
||||
@end
|
||||
|
||||
@interface ShareDataSource : MXKRecentsDataSource
|
||||
|
||||
//@property (weak) id<ShareDataSourceDelegate> delegate;
|
||||
|
||||
- (instancetype)initWithMode:(ShareDataSourceMode)dataSourceMode;
|
||||
|
||||
- (MXRoomSummary *)getRoomSummaryAtIndexPath:(NSIndexPath *)indexPath;
|
||||
|
||||
@end
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
|
||||
#import "ShareDataSource.h"
|
||||
#import "ShareExtensionManager.h"
|
||||
#import "RoomTableViewCell.h"
|
||||
|
||||
@interface ShareDataSource ()
|
||||
|
@ -48,16 +49,7 @@
|
|||
[self.recentRooms removeAllObjects];
|
||||
[self.recentPeople removeAllObjects];
|
||||
|
||||
// Force account manager to reload account from the local storage.
|
||||
[[MXKAccountManager sharedManager] forceReloadAccounts];
|
||||
|
||||
// Get the first active account
|
||||
MXKAccount *account = [MXKAccountManager sharedManager].activeAccounts.firstObject;
|
||||
|
||||
MXFileStore *fileStore = [[MXFileStore alloc] initWithCredentials:account.mxCredentials];
|
||||
|
||||
//NSMutableArray *rooms = [NSMutableArray array];
|
||||
//NSMutableArray *people = [NSMutableArray array];
|
||||
MXFileStore *fileStore = [[MXFileStore alloc] initWithCredentials:[ShareExtensionManager sharedManager].account.mxCredentials];
|
||||
|
||||
[fileStore asyncRoomsSummaries:^(NSArray<MXRoomSummary *> * _Nonnull roomsSummaries) {
|
||||
for (MXRoomSummary *roomSummary in roomsSummaries)
|
||||
|
@ -125,7 +117,7 @@
|
|||
|
||||
MXRoomSummary *roomSummary = [self getRoomSummaryAtIndexPath:indexPath];
|
||||
|
||||
[cell renderWithSummary:roomSummary];
|
||||
[cell renderWithSummary:roomSummary restClient:[ShareExtensionManager sharedManager].mxRestClient];
|
||||
|
||||
if (!roomSummary.displayname.length && !cell.titleLabel.text.length)
|
||||
{
|
||||
|
|
|
@ -42,7 +42,12 @@ extern NSString *const kShareExtensionManagerDidChangeMXSessionNotification;
|
|||
|
||||
@optional
|
||||
|
||||
- (void)shareExtensionManager:(ShareExtensionManager *)extensionManager didStartSendingContentToRoom:(MXRoom *)room;
|
||||
/**
|
||||
Called when the manager starts sending the content to a room
|
||||
@param extensionManager the ShareExtensionManager object that called the method
|
||||
@param roomID the ID of the room
|
||||
*/
|
||||
- (void)shareExtensionManager:(ShareExtensionManager *)extensionManager didStartSendingContentToRoom:(NSString *)roomID;
|
||||
|
||||
/**
|
||||
Called when the progress of the uploading media changes
|
||||
|
@ -70,10 +75,8 @@ extern NSString *const kShareExtensionManagerDidChangeMXSessionNotification;
|
|||
*/
|
||||
@property (nonatomic) SharePresentingViewController *primaryViewController;
|
||||
|
||||
/**
|
||||
The associated matrix session (nil by default).
|
||||
*/
|
||||
@property (nonatomic, readonly) MXSession *mxSession;
|
||||
@property (nonatomic, readonly) MXKAccount *account;
|
||||
@property (nonatomic, readonly) MXRestClient *mxRestClient;
|
||||
|
||||
/**
|
||||
A delegate used to notify about needed UI changes when sharing
|
||||
|
@ -87,11 +90,11 @@ extern NSString *const kShareExtensionManagerDidChangeMXSessionNotification;
|
|||
|
||||
/**
|
||||
Send the content that the user has chosen to a room
|
||||
@param room the room to send the content to
|
||||
@param roomID the ID of the room to send the content to
|
||||
@param failureBlock the code to be executed when sharing has failed for whatever reason
|
||||
note: there is no "successBlock" parameter because when the sharing succeds, the extension needs to close itself
|
||||
*/
|
||||
- (void)sendContentToRoom:(MXRoom *)room failureBlock:(void(^)())failureBlock;
|
||||
- (void)sendContentToRoom:(NSString *)roomID failureBlock:(void(^)())failureBlock;
|
||||
|
||||
/**
|
||||
Checks if there is an image in the user chosen content
|
||||
|
|
|
@ -32,13 +32,16 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
|
||||
@interface ShareExtensionManager ()
|
||||
|
||||
@property NSArray *rooms;
|
||||
@property NSArray *people;
|
||||
@property (nonatomic, readwrite) MXKAccount *account;
|
||||
@property (nonatomic, readwrite) MXRestClient *mxRestClient;
|
||||
|
||||
@property NSMutableArray <NSData *> *pendingImages;
|
||||
@property NSMutableDictionary <NSString *, NSNumber *> *imageUploadProgresses;
|
||||
@property ImageCompressionMode imageCompressionMode;
|
||||
@property CGFloat actualLargeSize;
|
||||
@property (nonatomic) NSArray *rooms;
|
||||
@property (nonatomic) NSArray *people;
|
||||
|
||||
@property (nonatomic) NSMutableArray <NSData *> *pendingImages;
|
||||
@property (nonatomic) NSMutableDictionary <NSString *, NSNumber *> *imageUploadProgresses;
|
||||
@property (nonatomic) ImageCompressionMode imageCompressionMode;
|
||||
@property (nonatomic) CGFloat actualLargeSize;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -52,7 +55,6 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
static ShareExtensionManager *sharedInstance = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
|
||||
sharedInstance = [[self alloc] init];
|
||||
|
||||
sharedInstance.pendingImages = [NSMutableArray array];
|
||||
|
@ -60,19 +62,19 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:sharedInstance selector:@selector(onMediaUploadProgress:) name:kMXMediaUploadProgressNotification object:nil];
|
||||
|
||||
// Add observer to handle logout
|
||||
/*[[NSNotificationCenter defaultCenter] addObserver:sharedInstance selector:@selector(checkUserAccount) name:kMXKAccountManagerDidRemoveAccountNotification object:nil];*/
|
||||
|
||||
// Add observer on the Extension host
|
||||
/*[[NSNotificationCenter defaultCenter] addObserver:sharedInstance selector:@selector(checkUserAccount) name:NSExtensionHostWillEnterForegroundNotification object:nil];*/
|
||||
/*[[NSNotificationCenter defaultCenter] addObserver:sharedInstance selector:@selector(suspendSession) name:NSExtensionHostDidEnterBackgroundNotification object:nil];*/
|
||||
|
||||
MXSDKOptions *sdkOptions = [MXSDKOptions sharedInstance];
|
||||
|
||||
// Apply the application group
|
||||
sdkOptions.applicationGroupIdentifier = @"group.im.vector";
|
||||
// Disable identicon use
|
||||
sdkOptions.disableIdenticonUseForUserAvatar = YES;
|
||||
|
||||
// Force account manager to reload account from the local storage.
|
||||
[[MXKAccountManager sharedManager] forceReloadAccounts];
|
||||
|
||||
// Save the first active account
|
||||
sharedInstance.account = [MXKAccountManager sharedManager].activeAccounts.firstObject;
|
||||
|
||||
sharedInstance.mxRestClient = [[MXRestClient alloc] initWithCredentials:sharedInstance.account.mxCredentials andOnUnrecognizedCertificateBlock:nil];
|
||||
});
|
||||
return sharedInstance;
|
||||
}
|
||||
|
@ -85,7 +87,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
_shareExtensionContext = shareExtensionContext;
|
||||
}
|
||||
|
||||
- (void)sendContentToRoom:(MXRoom *)room failureBlock:(void(^)())failureBlock
|
||||
- (void)sendContentToRoom:(NSString *)roomID failureBlock:(void(^)())failureBlock
|
||||
{
|
||||
NSString *UTTypeText = (__bridge NSString *)kUTTypeText;
|
||||
NSString *UTTypeURL = (__bridge NSString *)kUTTypeURL;
|
||||
|
@ -112,7 +114,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
if (weakSelf)
|
||||
{
|
||||
typeof(self) self = weakSelf;
|
||||
[self sendFileWithUrl:fileUrl toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
//[self sendFileWithUrl:fileUrl toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -129,7 +131,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
if (weakSelf)
|
||||
{
|
||||
typeof(self) self = weakSelf;
|
||||
[self sendText:text toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
//[self sendText:text toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -146,7 +148,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
if (weakSelf)
|
||||
{
|
||||
typeof(self) self = weakSelf;
|
||||
[self sendText:url.absoluteString toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
//[self sendText:url.absoluteString toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -167,7 +169,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
{
|
||||
UIImage *firstImage = [UIImage imageWithData:self.pendingImages.firstObject];
|
||||
UIAlertController *compressionPrompt = [self compressionPromptForImage:firstImage shareBlock:^{
|
||||
[self sendImages:self.pendingImages withProviders:item.attachments toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
//[self sendImages:self.pendingImages withProviders:item.attachments toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
}];
|
||||
|
||||
[self.delegate shareExtensionManager:self showImageCompressionPrompt:compressionPrompt];
|
||||
|
@ -185,7 +187,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
if (weakSelf)
|
||||
{
|
||||
typeof(self) self = weakSelf;
|
||||
[self sendVideo:videoLocalUrl toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
//[self sendVideo:videoLocalUrl toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -202,7 +204,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
if (weakSelf)
|
||||
{
|
||||
typeof(self) self = weakSelf;
|
||||
[self sendVideo:videoLocalUrl toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
//[self sendVideo:videoLocalUrl toRoom:room extensionItem:item failureBlock:failureBlock];
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -405,11 +407,11 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
return compressionPrompt;
|
||||
}
|
||||
|
||||
- (void)didStartSendingToRoom:(MXRoom *)room
|
||||
- (void)didStartSendingToRoom:(NSString *)roomID
|
||||
{
|
||||
if ([self.delegate respondsToSelector:@selector(shareExtensionManager:didStartSendingContentToRoom:)])
|
||||
{
|
||||
[self.delegate shareExtensionManager:self didStartSendingContentToRoom:room];
|
||||
[self.delegate shareExtensionManager:self didStartSendingContentToRoom:roomID];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -450,9 +452,9 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
|
||||
#pragma mark - Sharing
|
||||
|
||||
- (void)sendText:(NSString *)text toRoom:(MXRoom *)room extensionItem:(NSExtensionItem *)extensionItem failureBlock:(void(^)())failureBlock
|
||||
- (void)sendText:(NSString *)text toRoom:(NSString *)roomID extensionItem:(NSExtensionItem *)extensionItem failureBlock:(void(^)())failureBlock
|
||||
{
|
||||
[self didStartSendingToRoom:room];
|
||||
[self didStartSendingToRoom:roomID];
|
||||
if (!text)
|
||||
{
|
||||
NSLog(@"[ShareExtensionManager] loadItemForTypeIdentifier: failed.");
|
||||
|
@ -465,7 +467,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
[room sendTextMessage:text success:^(NSString *eventId) {
|
||||
[self.mxRestClient sendTextMessageToRoom:roomID text:text success:^(NSString *eventId) {
|
||||
if (weakSelf)
|
||||
{
|
||||
typeof(self) self = weakSelf;
|
||||
|
@ -480,9 +482,9 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
}];
|
||||
}
|
||||
|
||||
- (void)sendFileWithUrl:(NSURL *)fileUrl toRoom:(MXRoom *)room extensionItem:(NSExtensionItem *)extensionItem failureBlock:(void(^)())failureBlock
|
||||
- (void)sendFileWithUrl:(NSURL *)fileUrl toRoom:(NSString *)roomID extensionItem:(NSExtensionItem *)extensionItem failureBlock:(void(^)())failureBlock
|
||||
{
|
||||
[self didStartSendingToRoom:room];
|
||||
[self didStartSendingToRoom:roomID];
|
||||
if (!fileUrl)
|
||||
{
|
||||
NSLog(@"[ShareExtensionManager] loadItemForTypeIdentifier: failed.");
|
||||
|
@ -500,7 +502,11 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
[room sendFile:fileUrl mimeType:mimeType localEcho:nil success:^(NSString *eventId) {
|
||||
//self.mxRestClient send
|
||||
|
||||
|
||||
|
||||
/*[room sendFile:fileUrl mimeType:mimeType localEcho:nil success:^(NSString *eventId) {
|
||||
if (weakSelf)
|
||||
{
|
||||
typeof(self) self = weakSelf;
|
||||
|
@ -512,7 +518,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode)
|
|||
{
|
||||
failureBlock();
|
||||
}
|
||||
} keepActualFilename:YES];
|
||||
} keepActualFilename:YES];*/
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue