mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
Added .gitignore
This commit is contained in:
176
Watch/Extension/TGInputController.m
Normal file
176
Watch/Extension/TGInputController.m
Normal file
@@ -0,0 +1,176 @@
|
||||
#import "TGInputController.h"
|
||||
#import "TGWatchCommon.h"
|
||||
#import "TGBridgeCommon.h"
|
||||
#import "TGInterfaceController.h"
|
||||
|
||||
#import "TGFileCache.h"
|
||||
#import "TGExtensionDelegate.h"
|
||||
#import "TGBridgePresetsSignals.h"
|
||||
|
||||
@implementation TGInputController
|
||||
|
||||
+ (void)presentPlainInputControllerForInterfaceController:(TGInterfaceController *)interfaceController completion:(void (^)(NSString *))completion;
|
||||
{
|
||||
[interfaceController presentTextInputControllerWithSuggestions:nil allowedInputMode:WKTextInputModePlain completion:^(NSArray *results)
|
||||
{
|
||||
if (completion != nil && results.count > 0 && [results.firstObject isKindOfClass:[NSString class]])
|
||||
completion(results.firstObject);
|
||||
}];
|
||||
}
|
||||
|
||||
+ (void)presentInputControllerForInterfaceController:(TGInterfaceController *)interfaceController suggestionsForText:(NSString *)text completion:(void (^)(NSString *))completion
|
||||
{
|
||||
[interfaceController presentTextInputControllerWithSuggestions:[self suggestionsForText:text] allowedInputMode:WKTextInputModeAllowEmoji completion:^(NSArray *results)
|
||||
{
|
||||
if (completion != nil && results.count > 0 && [results.firstObject isKindOfClass:[NSString class]])
|
||||
completion(results.firstObject);
|
||||
}];
|
||||
}
|
||||
|
||||
+ (void)presentAudioControllerForInterfaceController:(TGInterfaceController *)interfaceController completion:(void (^)(int64_t, int32_t, NSURL *))completion
|
||||
{
|
||||
NSDictionary *options = @
|
||||
{
|
||||
WKAudioRecorderControllerOptionsActionTitleKey: TGLocalized(@"Watch.Compose.Send"),
|
||||
};
|
||||
|
||||
int64_t randomId = 0;
|
||||
arc4random_buf(&randomId, sizeof(int64_t));
|
||||
|
||||
NSURL *url = [[TGExtensionDelegate instance].audioCache urlForKey:[NSString stringWithFormat:@"%lld", randomId]];
|
||||
[interfaceController presentAudioRecorderControllerWithOutputURL:url preset:WKAudioRecorderPresetWideBandSpeech options:options completion:^(BOOL didSave, NSError * _Nullable error)
|
||||
{
|
||||
WKAudioFileAsset *asset = [WKAudioFileAsset assetWithURL:url];
|
||||
|
||||
if (didSave && !error)
|
||||
completion(randomId, (int32_t)asset.duration, url);
|
||||
}];
|
||||
}
|
||||
|
||||
+ (NSArray *)suggestionsForText:(NSString *)text
|
||||
{
|
||||
return [self customSuggestions];
|
||||
}
|
||||
|
||||
+ (NSArray *)customSuggestions
|
||||
{
|
||||
NSArray *presetIdentifiers = [self presetIdentifiers];
|
||||
|
||||
NSMutableArray *suggestions = [[NSMutableArray alloc] init];
|
||||
NSDictionary *customPresets = [self customPresets];
|
||||
for (NSString *identifier in presetIdentifiers)
|
||||
{
|
||||
NSString *preset = customPresets[identifier];
|
||||
if (preset == nil)
|
||||
preset = TGLocalized([NSString stringWithFormat:@"Watch.Suggestion.%@", identifier]);
|
||||
|
||||
[suggestions addObject:preset];
|
||||
}
|
||||
|
||||
return suggestions;
|
||||
}
|
||||
|
||||
+ (NSDictionary *)customPresets
|
||||
{
|
||||
NSData *data = [NSData dataWithContentsOfURL:[TGBridgePresetsSignals presetsURL]];
|
||||
|
||||
@try
|
||||
{
|
||||
id presets = [NSKeyedUnarchiver unarchiveObjectWithData:data];
|
||||
if ([presets isKindOfClass:[NSDictionary class]])
|
||||
return presets;
|
||||
|
||||
return nil;
|
||||
}
|
||||
@catch (NSException *exception)
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSArray *)presetIdentifiers
|
||||
{
|
||||
return @
|
||||
[
|
||||
@"OK",
|
||||
@"Thanks",
|
||||
@"WhatsUp",
|
||||
@"TalkLater",
|
||||
@"CantTalk",
|
||||
@"HoldOn",
|
||||
@"BRB",
|
||||
@"OnMyWay"
|
||||
];
|
||||
}
|
||||
|
||||
+ (NSArray *)composeSuggestions
|
||||
{
|
||||
static NSArray *suggestions;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^
|
||||
{
|
||||
suggestions = @
|
||||
[
|
||||
TGLocalized(@"Watch.Suggestion.WhatsUp"),
|
||||
TGLocalized(@"Watch.Suggestion.OnMyWay"),
|
||||
TGLocalized(@"Watch.Suggestion.OK"),
|
||||
TGLocalized(@"Watch.Suggestion.CantTalk"),
|
||||
TGLocalized(@"Watch.Suggestion.CallSoon"),
|
||||
TGLocalized(@"Watch.Suggestion.Thanks")
|
||||
];
|
||||
});
|
||||
return suggestions;
|
||||
}
|
||||
|
||||
+ (NSArray *)generalSuggestions
|
||||
{
|
||||
static NSArray *suggestions;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^
|
||||
{
|
||||
suggestions = @
|
||||
[
|
||||
TGLocalized(@"Watch.Suggestion.OK"),
|
||||
TGLocalized(@"Watch.Suggestion.Thanks"),
|
||||
TGLocalized(@"Watch.Suggestion.WhatsUp")
|
||||
];
|
||||
});
|
||||
return suggestions;
|
||||
}
|
||||
|
||||
+ (NSArray *)yesNoSuggestions
|
||||
{
|
||||
static NSArray *suggestions;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^
|
||||
{
|
||||
suggestions = @
|
||||
[
|
||||
TGLocalized(@"Watch.Suggestion.Yes"),
|
||||
TGLocalized(@"Watch.Suggestion.No"),
|
||||
TGLocalized(@"Watch.Suggestion.Absolutely"),
|
||||
TGLocalized(@"Watch.Suggestion.Nope")
|
||||
];
|
||||
});
|
||||
return suggestions;
|
||||
}
|
||||
|
||||
+ (NSArray *)laterSuggestions
|
||||
{
|
||||
static NSArray *suggestions;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^
|
||||
{
|
||||
suggestions = @
|
||||
[
|
||||
TGLocalized(@"Watch.Suggestion.TalkLater"),
|
||||
TGLocalized(@"Watch.Suggestion.CantTalk"),
|
||||
TGLocalized(@"Watch.Suggestion.HoldOn"),
|
||||
TGLocalized(@"Watch.Suggestion.BRB"),
|
||||
TGLocalized(@"Watch.Suggestion.OnMyWay")
|
||||
];
|
||||
});
|
||||
return suggestions;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user