getSharedActivity method

ProgressListener? getSharedActivity({
  1. required String recipientUserID,
  2. required String shareToken,
  3. void onComplete(
    1. GemError error,
    2. Activity? activity
    )?,
})

Gets a shared activity kept by a user.

Parameters

Returns

Implementation

ProgressListener? getSharedActivity({
  required String recipientUserID,
  required String shareToken,
  void Function(GemError error, Activity? activity)? onComplete,
}) {
  final EventDrivenProgressListener progressListener =
      EventDrivenProgressListener();
  GemKitPlatform.instance.registerEventHandler(
    progressListener.id,
    progressListener,
  );

  progressListener.registerOnCompleteWithData((
    int err,
    String hint,
    Map<dynamic, dynamic> json,
  ) {
    GemKitPlatform.instance.unregisterEventHandler(progressListener.id);
    if (err != 0) {
      onComplete?.call(GemErrorExtension.fromCode(err), null);
      return;
    }
    // The store answers an empty activity when it is not kept.
    final Activity activity = Activity.fromJson(json['result']);
    if (activity.shareToken.isEmpty) {
      onComplete?.call(GemError.notFound, null);
    } else {
      onComplete?.call(GemError.success, activity);
    }
  });

  final OperationResult resultString = objectMethod(
    pointerId,
    'ActivityStore',
    'getSharedActivity',
    args: <String, dynamic>{
      'recipientUserID': recipientUserID,
      'shareToken': shareToken,
      'listener': progressListener.id,
    },
  );
  final GemError errorCode = GemErrorExtension.fromCode(
    resultString['result'],
  );

  if (errorCode != GemError.success) {
    onComplete?.call(errorCode, null);
    return null;
  }

  return progressListener;
}