// Copyright (c) 2024 Tencent. All rights reserved. // Author: eddardliu #import "TUIMultimediaPasterSelectController.h" #import #import #import "TUIMultimediaPlugin/NSArray+Functional.h" #import "TUIMultimediaPlugin/TUIMultimediaCommon.h" #import "TUIMultimediaPlugin/TUIMultimediaImagePicker.h" #import "TUIMultimediaPlugin/TUIMultimediaPasterSelectView.h" #import "TUIMultimediaPlugin/TUIMultimediaPersistence.h" @interface TUIMultimediaPasterSelectController () { TUIMultimediaPasterSelectView *_selectView; TUIMultimediaImagePicker *_picker; } @end @implementation TUIMultimediaPasterSelectController - (instancetype)init { self = [super init]; return self; } - (void)viewDidLoad { [super viewDidLoad]; _selectView = [[TUIMultimediaPasterSelectView alloc] init]; _selectView.config = [TUIMultimediaPasterConfig loadConfig]; _selectView.delegate = self; self.mainView = _selectView; } - (void)popupControllerDidCanceled { [_delegate onPasterSelectControllerExit:self]; } - (void)onPasterSelected:(UIImage *)image { [_delegate pasterSelectController:self onPasterSelected:image]; } - (void)pasterSelectView:(TUIMultimediaPasterSelectView *)v needAddCustomPaster:(TUIMultimediaPasterGroupConfig *)group completeCallback:(void (^)(void))callback { _picker = [[TUIMultimediaImagePicker alloc] init]; @weakify(self); _picker.callback = ^(UIImage *img) { @strongify(self); if (img == nil || self == nil) { return; } NSURL *url = [TUIMultimediaPasterConfig saveCustomPaster:img]; if (url == nil) { return; } TUIMultimediaPasterItemConfig *item = [[TUIMultimediaPasterItemConfig alloc] init]; item.imageUrl = url; item.isUserAdded = YES; group.itemList = [group.itemList arrayByAddingObject:item]; [TUIMultimediaPasterConfig saveConfig:v.config]; callback(); }; [_picker presentOn:self]; } - (void)pasterSelectView:(TUIMultimediaPasterSelectView *)v needDeleteCustomPasterInGroup:(TUIMultimediaPasterGroupConfig *)group index:(NSInteger)index completeCallback:(void (^)(BOOL deleted))callback { UIAlertController *alert = [UIAlertController alertControllerWithTitle:[TUIMultimediaCommon localizedStringForKey:@"remove_paster"] message:nil preferredStyle:UIAlertControllerStyleActionSheet]; UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:[TUIMultimediaCommon localizedStringForKey:@"cancel"] style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { callback(NO); }]; UIAlertAction *deleteAction = [UIAlertAction actionWithTitle:[TUIMultimediaCommon localizedStringForKey:@"delete"] style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { NSMutableArray *list = [NSMutableArray arrayWithArray:group.itemList]; TUIMultimediaPasterItemConfig *paster = list[index]; [list removeObjectAtIndex:index]; group.itemList = list; [TUIMultimediaPasterConfig removeCustomPaster:paster]; [TUIMultimediaPasterConfig saveConfig:self->_selectView.config]; callback(YES); }]; [alert addAction:cancelAction]; [alert addAction:deleteAction]; [self presentViewController:alert animated:YES completion:nil]; } @end