Skip to main content

About In-app Callback Events

Function<UpdateCallbackEvent eventName, EventData> updateCallback

Example of how you can pass the callback function for us to trigger whenever any update events occur.

  GetIt.I.registerSingletonAsync<LessonSdkManager>(
() async => await LessonSdkManager().init(
...
updateCallback: lessonSdkUpdateCallback, // <---- pass us the callback here
),
);

Here are the events. You may refer to updatecallbackevent.md.

enum UpdateCallbackEvent {
lessonStarted,
lessonCancelled,
lessonFinished,
planStarted,
planCancelled,
planFinished,
}

void lessonSdkUpdateCallback(
UpdateCallbackEvent eventName,
EventData eventData,
) {
log.d("lessonSdkUpdateCallback. eventName: $eventName");

final clientUserId = eventData.clientUserId;

switch (eventName) {
case UpdateCallbackEvent.lessonStarted:
final lessonStartedData = eventData as LessonStartedData;
final lessonId = lessonStartedData.lessonId;
final lesson = lessonStartedData.lesson;
final playId = lessonStartedData.playId;
final play = lessonStartedData.play;
final planId = lessonStartedData.planId;
final plan = lessonStartedData.plan;
final planPlayId = lessonStartedData.planPlayId;
final planPlay = lessonStartedData.planPlay;

// do your action here...
log.d('[callback] LessonStart. clientUserId: $clientUserId');
log.d('[callback] LessonStart. lessonId: $lessonId');
log.d('[callback] LessonStart. lesson: $lesson');
log.d('[callback] LessonStart. playId: $playId');
log.d('[callback] LessonStart. play: $play');
log.d('[callback] LessonStart. planId: $planId');
log.d('[callback] LessonStart. plan: $plan');
log.d('[callback] LessonStart. planPlayId: $planPlayId');
log.d('[callback] LessonStart. planPlay: $planPlay');
break;
case UpdateCallbackEvent.lessonCancelled:
final lessonCancelledData = eventData as LessonCancelledData;
final lessonId = lessonCancelledData.lessonId;
final lesson = lessonCancelledData.lesson;
final playId = lessonCancelledData.playId;
final play = lessonCancelledData.play;
final planId = lessonCancelledData.planId;
final plan = lessonCancelledData.plan;
final planPlayId = lessonCancelledData.planPlayId;
final planPlay = lessonCancelledData.planPlay;

// do your action here...
// log the userId, lessonId, and playId
log.d('[callback] LessonCancel. clientUserId: $clientUserId');
log.d('[callback] LessonCancel. lessonId: $lessonId');
log.d('[callback] LessonCancel. lesson: $lesson');
log.d('[callback] LessonCancel. playId: $playId');
log.d('[callback] LessonCancel. play: $play');
log.d('[callback] LessonCancel. planId: $planId');
log.d('[callback] LessonCancel. plan: $plan');
log.d('[callback] LessonCancel. planPlayId: $planPlayId');
log.d('[callback] LessonCancel. planPlay: $planPlay');

break;

case UpdateCallbackEvent.lessonFinished:
final lessonFinishedData = eventData as LessonFinishedData;
final lessonId = lessonFinishedData.lessonId;
final lesson = lessonFinishedData.lesson;
final playId = lessonFinishedData.playId;
final play = lessonFinishedData.play;
final planId = lessonFinishedData.planId;
final plan = lessonFinishedData.plan;
final planPlayId = lessonFinishedData.planPlayId;
final planPlay = lessonFinishedData.planPlay;

// do your action here...
// log the userId, lessonId, and playId
log.d('[callback] LessonFinish. clientUserId: $clientUserId');
log.d('[callback] LessonFinish. lessonId: $lessonId');
log.d('[callback] LessonFinish. lesson: $lesson');
log.d('[callback] LessonFinish. playId: $playId');
log.d('[callback] LessonFinish. play: $play');
log.d('[callback] LessonFinish. planId: $planId');
log.d('[callback] LessonFinish. plan: $plan');
log.d('[callback] LessonFinish. planPlayId: $planPlayId');
log.d('[callback] LessonFinish. planPlay: $planPlay');

break;
case UpdateCallbackEvent.planStarted:
final planStartedData = eventData as PlanStartedData;
final planId = planStartedData.planId;
final plan = planStartedData.plan;
final planPlayId = planStartedData.planPlayId;
final planPlay = planStartedData.planPlay;

// do your action here...
log.d('[callback] PlanStart. clientUserId: $clientUserId');
log.d('[callback] PlanStart. planId: $planId');
log.d('[callback] PlanStart. plan: $plan');
log.d('[callback] PlanStart. planPlayId: $planPlayId');
log.d('[callback] PlanStart. planPlay: $planPlay');

break;
case UpdateCallbackEvent.planCancelled:
final planCancelledData = eventData as PlanCancelledData;
final planId = planCancelledData.planId;
final plan = planCancelledData.plan;
final planPlayId = planCancelledData.planPlayId;
final planPlay = planCancelledData.planPlay;

// do your action here...`
log.d('[callback] PlanCancel. clientUserId: $clientUserId');
log.d('[callback] PlanCancel. planId: $planId');
log.d('[callback] PlanCancel. plan: $plan');
log.d('[callback] PlanCancel. planPlayId: $planPlayId');
log.d('[callback] PlanCancel. planPlay: $planPlay');

break;
case UpdateCallbackEvent.planFinished:
final planFinishedData = eventData as PlanFinishedData;
final planId = planFinishedData.planId;
final plan = planFinishedData.plan;
final planPlayId = planFinishedData.planPlayId;
final planPlay = planFinishedData.planPlay;

// do your action here...
log.d('[callback] PlanFinish. clientUserId: $clientUserId');
log.d('[callback] PlanFinish. planId: $planId');
log.d('[callback] PlanFinish. plan: $plan');
log.d('[callback] PlanFinish. planPlayId: $planPlayId');
log.d('[callback] PlanFinish. planPlay: $planPlay');

break;
default:
break;
}

storeCallbackInSharedPreferences(
clientUserId: clientUserId,
eventName: eventName,
eventData: eventData,
);
}

Here is an example how you may want to implement the updateCallback: