register method

Future<void> register({
  1. required List<IaBase> modules,
})

Register a collection of specified modules for client integration.

Modules provide specific functionality to client integrations, and are available after registering with the following IaSdk.instance getter methods:

Implementation

Future<void> register({
  required List<IaBase> modules,
}) async {
  if (!_modulesRegistered) {
    final arguments = _RequestModelRegisterModules(
      modules: modules.map(
        (moduleEntry) {
          return moduleEntry.module;
        },
      ).toList(),
    );
    return await _Methods.register.invoke(arguments).then((value) {
      for (final module in modules) {
        for (final internalModule
            in <
              ({
                IaBaseModule type,
                Function(dynamic value) setProperty,
              })
            >{
              (
                type: IaBaseModule.cardLink,
                setProperty: (value) => _cardLink = value,
              ),
              (
                type: IaBaseModule.ordering,
                setProperty: (value) => _ordering = value,
              ),
              (
                type: IaBaseModule.overTheCounter,
                setProperty: (value) => _overTheCounter = value,
              ),
              (
                type: IaBaseModule.pharmacyDetails,
                setProperty: (value) => _pharmacy = value,
              ),
              (
                type: IaBaseModule.prescription,
                setProperty: (value) => _prescription = value,
              ),
            }) {
          if (module.module == internalModule.type) {
            internalModule.setProperty(module);
          }
        }
      }
      _modulesRegistered = true;
      return value;
    });
  }
}