1
0
mirror of https://github.com/danog/Telegram.git synced 2024-12-04 02:17:51 +01:00
Telegram/Watch/Extension/TGStickerPacksController.m
2015-10-01 19:19:52 +03:00

116 lines
2.6 KiB
Objective-C

#import "TGStickerPacksController.h"
#import "TGBridgeStickersSignals.h"
#import "TGBridgeStickerPack.h"
#import "WKInterfaceTable+TGDataDrivenTable.h"
#import "TGStickerPackRowController.h"
#import "TGStickersController.h"
NSString *const TGStickerPacksControllerIdentifier = @"TGStickerPacksController";
@implementation TGStickerPacksControllerContext
- (instancetype)initWithStickerPacks:(NSArray *)stickerPacks
{
self = [super init];
if (self != nil)
{
_stickerPacks = stickerPacks;
}
return self;
}
@end
@interface TGStickerPacksController () <TGTableDataSource>
{
TGStickerPacksControllerContext *_context;
NSArray *_stickerPackModels;
}
@end
@implementation TGStickerPacksController
- (instancetype)init
{
self = [super init];
if (self != nil)
{
[self.table _setInitialHidden:true];
self.table.tableDataSource = self;
}
return self;
}
- (void)configureWithContext:(TGStickerPacksControllerContext *)context
{
_context = context;
_stickerPackModels = context.stickerPacks;
__weak TGStickerPacksController *weakSelf = self;
[self performInterfaceUpdate:^(bool animated)
{
__strong TGStickerPacksController *strongSelf = weakSelf;
if (strongSelf == nil)
return;
strongSelf.activityIndicator.hidden = true;
[strongSelf.table reloadData];
}];
}
- (void)willActivate
{
[super willActivate];
[self.table notifyVisiblityChange];
}
#pragma mark -
- (Class)table:(WKInterfaceTable *)table rowControllerClassAtIndexPath:(NSIndexPath *)indexPath
{
return [TGStickerPackRowController class];
}
- (NSUInteger)numberOfRowsInTable:(WKInterfaceTable *)table section:(NSUInteger)section
{
return _stickerPackModels.count;
}
- (void)table:(WKInterfaceTable *)table updateRowController:(TGStickerPackRowController *)controller forIndexPath:(TGIndexPath *)indexPath
{
__weak TGStickerPacksController *weakSelf = self;
controller.isVisible = ^bool
{
__strong TGStickerPacksController *strongSelf = weakSelf;
if (strongSelf == nil)
return false;
return strongSelf.isVisible;
};
[controller updateWithStickerPack:_stickerPackModels[indexPath.row]];
}
- (void)table:(WKInterfaceTable *)table didSelectRowAtIndexPath:(TGIndexPath *)indexPath
{
[self dismissController];
if (_context.completionBlock != nil)
_context.completionBlock(_stickerPackModels[indexPath.row]);
}
#pragma mark -
+ (NSString *)identifier
{
return TGStickerPacksControllerIdentifier;
}
@end