1 // Copyright 2015-present 650 Industries. All rights reserved.
2 
3 #import <ExpoModulesCore/EXTaskInterface.h>
4 #import <ExpoModulesCore/EXTaskManagerInterface.h>
5 
6 @protocol EXTaskServiceInterface
7 
8 /**
9  *  Returns boolean value whether the task with given name is already registered for given appId.
10  */
11 - (BOOL)hasRegisteredTaskWithName:(nonnull NSString *)taskName
12                          forAppId:(nonnull NSString *)appId;
13 
14 /**
15  *  Registers task in any kind of persistent storage, so it could be restored in future sessions.
16  */
17 - (void)registerTaskWithName:(nonnull NSString *)taskName
18                        appId:(nonnull NSString *)appId
19                       appUrl:(nonnull NSString *)appUrl
20                consumerClass:(nonnull Class)consumerClass
21                      options:(nullable NSDictionary *)options;
22 
23 /**
24  *  Unregisters task with given name and for given appId. If consumer class is provided,
25  *  it can throw an exception if task's consumer is not a member of that class.
26  */
27 - (void)unregisterTaskWithName:(nonnull NSString *)taskName
28                       forAppId:(nonnull NSString *)appId
29                  consumerClass:(nullable Class)consumerClass;
30 
31 /**
32  *  Unregisters all tasks registered for the app with given appId.
33  */
34 - (void)unregisterAllTasksForAppId:(nonnull NSString *)appId;
35 
36 /**
37  *  Returns boolean value whether or not the task's consumer is a member of given class.
38  */
39 - (BOOL)taskWithName:(nonnull NSString *)taskName
40             forAppId:(nonnull NSString *)appId
41   hasConsumerOfClass:(nonnull Class)consumerClass;
42 
43 /**
44  *  Returns options associated with the task with given name and appId or nil if task not found.
45  */
46 - (nullable NSDictionary *)getOptionsForTaskName:(nonnull NSString *)taskName
47                                         forAppId:(nonnull NSString *)appId;
48 
49 /**
50  *  Returns an array of registered tasks for given appId.
51  */
52 - (nonnull NSArray *)getRegisteredTasksForAppId:(nullable NSString *)appId;
53 
54 /**
55  *  Notifies the service that a task has just finished.
56  */
57 - (void)notifyTaskWithName:(nonnull NSString *)taskName
58                   forAppId:(nonnull NSString *)appId
59      didFinishWithResponse:(nonnull NSDictionary *)response;
60 
61 /**
62  *  Passes a reference of task manager for given appId to the service.
63  */
64 - (void)setTaskManager:(nonnull id<EXTaskManagerInterface>)taskManager
65               forAppId:(nonnull NSString *)appId
66                withUrl:(nonnull NSString *)appUrl;
67 
68 @end
69