triggerUi function

Future<void> triggerUi({
  1. required String? destination,
  2. required Task task,
  3. required BuildContext context,
  4. bool isTriggered = false,
})

Implementation

Future<void> triggerUi({
  required String? destination,
  required challenge_entity.Task task,
  required BuildContext context,
  bool isTriggered = false,
}) async {
  challenge_entity.Root? fullPageRoot;
  try {
    fullPageRoot = task.variants[0].roots
        .where(
          (element) => element.id == destination,
        )
        .single;
  } catch (e) {
    log(
      "NudgeChallengesUi: $e, pageRoot: $fullPageRoot",
      name: "NudgeChallengesUi",
    );
  }

  if (fullPageRoot == null) {
    return;
  }

  int position = fullPageRoot.type;

  Nudge.getInstance().submit(
    taskId: task.id ?? "",
    response: [
      {
        "root_id": fullPageRoot.id,
        "widget_id": fullPageRoot.widgets[0].id,
        // "component_id": "UNINITIALIZED",
        "answers": [],
        "action": "OPENED",
      },
    ],
    onSuccessCallback: (response) {
      if (kDebugMode) {
        print("response: $response");
      }
    },
    onErrorCallback: (error, stackTrace) {
      if (kDebugMode) {
        print("error: $error");
      }
    },
  );

  switch (position) {
    case 1:
      showNudgeDialog(
          context: context,
          builder: (context) {
            return Dialog(
              backgroundColor: Colors.transparent,
              surfaceTintColor: Colors.transparent,
              insetPadding: const EdgeInsets.all(0),
              child: SingleChildScrollView(
                child: IntrinsicHeight(
                  child: IntrinsicWidth(
                    child: UiGenerator.buildWidget(
                      type: 'modal',
                      task.id!,
                      fullPageRoot!.id,
                      fontFamily: 'Inter',
                      fullPageRoot.widgets[0],
                      assets: Nudge.assets,
                      assetUrl: assetUrl,
                    ),
                  ),
                ),
              ),
            );
          }).then((value) {
        NudgeGCallbackManager.dispatchEvent(
          NudgeGlobalExperienceCallback(
            "NUDGE_EXPERIENCE_DISMISS",
            {
              "campaign_id": task.id,
            },
          ),
        );

        // if (isTriggered) {
        //   CentralDataRepository.destroyInstance(task.id!);
        // }

        // NudgeRouteObserver.pop();

        Nudge.getInstance().submit(
          taskId: task.id ?? "",
          response: [
            {
              "root_id": fullPageRoot?.id,
              "widget_id": fullPageRoot?.widgets[0].id,
              // "component_id": "UNINITIALIZED",
              "answers": [],
              "action": "DISMISSED",
            },
          ],
          onSuccessCallback: (response) {
            if (kDebugMode) {
              print("response: $response");
            }
          },
          onErrorCallback: (error, stackTrace) {
            if (kDebugMode) {
              print("error: $error");
            }
          },
        );
      });
      break;

    case 2:
      showNudgeBottomSheet(
          isScrollControlled: true,
          context: context,
          builder: (context) {
            return IntrinsicWidth(
              child: IntrinsicHeight(
                child: UiGenerator.buildWidget(
                  type: 'modal',
                  NudgeChallengesUi.taskId,
                  fullPageRoot!.id,
                  fontFamily: 'Inter',
                  fullPageRoot.widgets[0],
                  assets: Nudge.assets,
                  assetUrl: assetUrl,
                ),
              ),
            );
          }).then((value) {
        NudgeGCallbackManager.dispatchEvent(
          NudgeGlobalExperienceCallback(
            "NUDGE_EXPERIENCE_DISMISS",
            {
              "campaign_id": task.id,
            },
          ),
        );

        // if (isTriggered) {
        //   CentralDataRepository.destroyInstance(task.id!);
        // }

        Nudge.getInstance().submit(
          taskId: task.id ?? "",
          response: [
            {
              "root_id": fullPageRoot?.id,
              "widget_id": fullPageRoot?.widgets[0].id,
              // "component_id": "UNINITIALIZED",
              "answers": [],
              "action": "DISMISSED",
            },
          ],
          onSuccessCallback: (response) {
            if (kDebugMode) {
              print("response: $response");
            }
          },
          onErrorCallback: (error, stackTrace) {
            if (kDebugMode) {
              print("error: $error");
            }
          },
        );
      });
      break;

    case 4:
      showNudgePage(
        context: context,
        builder: (context) => ChallengesPage(
          root: fullPageRoot!,
        ),
      ).then((value) {
        NudgeGCallbackManager.dispatchEvent(
          NudgeGlobalExperienceCallback(
            "NUDGE_EXPERIENCE_DISMISS",
            {
              "campaign_id": task.id,
            },
          ),
        );

        // if (isTriggered) {
        //   CentralDataRepository.destroyInstance(task.id!);
        // }

        Nudge.getInstance().submit(
          taskId: task.id ?? "",
          response: [
            {
              "root_id": fullPageRoot?.id,
              "widget_id": fullPageRoot?.widgets[0].id,
              // "component_id": "UNINITIALIZED",
              "answers": [],
              "action": "DISMISSED",
            },
          ],
          onSuccessCallback: (response) {
            if (kDebugMode) {
              print("response: $response");
            }
          },
          onErrorCallback: (error, stackTrace) {
            if (kDebugMode) {
              print("error: $error");
            }
          },
        );
      });
      break;

    default:
      break;
  }
}