appAttention static method

void appAttention(
  1. BuildContext context, {
  2. String pageName = "",
  3. bool onBannerClick(
    1. Map<String, dynamic>? bannerData
    )?,
})

Implementation

static void appAttention(BuildContext context,
    {String pageName = "",
    bool Function(Map<String, dynamic>? bannerData)? onBannerClick}) async {
  var api = CRMAPI(shared.config?.pamServer ?? "");
  var attention = await api.getAppAttention(pageName);

  if (attention != null && attention.isNotEmpty) {
    try {
      Map<String, dynamic> json = jsonDecode(attention);
      if (json.isNotEmpty) {
        var result =
            await PamFlutterPlatform.instance.appAttentionPopup(json);

        if (result != null) {
          // คลิก Banner
          if (onBannerClick == null || !onBannerClick(result)) {
            // Default Behavior: เปิด URL
            final url = result["url"] as String?;
            if (url != null) {
              // await launchUrl(Uri.parse(url));
              final Uri uri = Uri.parse(url);

              if (await canLaunchUrl(uri)) {
                await launchUrl(uri, mode: LaunchMode.externalApplication);
              } else {
                Pam.log(["Could not launch $url"]);
              }
            }
          }
        }
      }
    } catch (e) {
      Pam.log(["App Attention Error: ${e.toString()}"]);
    }
  }
}