atlas_support_sdk 1.0.0 copy "atlas_support_sdk: ^1.0.0" to clipboard
atlas_support_sdk: ^1.0.0 copied to clipboard

outdated

Atlas customer support chat widget

Atlas customer support chat widget

Getting started #

To use it with Android you may need to ensure that AndroidManifest.xml includes <uses-permission android:name="android.permission.INTERNET" />

Usage #

You can run sample application by changing credentials in the main.dart file.

Using the widget to add the chat #

import 'package:atlas_support_sdk/atlas_support_widget.dart';

// Use widget:
AtlasSupportWidget(appId: "", userId: "", userHash: "")

Listening for stats changes #

Each conversation stat instance contains id, unread (amount of unread messages), and closed flag.

import 'package:atlas_support_sdk/watch_atlas_support_stats.dart';

// Listen:
class _MyWidgetState extends State<MyWidget> {
  int _unreadCount = 0;
  Function? _unsubscribe = null;

  @override
  void initState() {
    super.initState();
    _unsubscribe = watchAtlasSupportStats(
        appId: "",
        userId: "",
        userHash: "",
        onStatsChange: (stats) {
          setState(() {
            _unreadCount = stats.conversations
                .fold(0, (sum, conversation) => sum + conversation.closed ? 0 : conversation.unread);
          });
        });
  }

  @override
  void dispose() {
    _unsubscribe?.call();
    super.dispose();
  }

  // ...
}

Using instance with shared settings #

Using SDK instance you can change user for all widgets and watches by calling sdk.identify(userId: "", userHash: "").

import 'package:atlas_support_sdk/atlas_support_sdk.dart';

// Listen:
class _MyWidgetState extends State<MyWidget> {
  int _unreadCount = 0;
  Function? _unsubscribe = null;
  AtlasSupportSDK atlasSdk = createAtlasSupportSDK(appId: "", userId: "", userHash: "");

  @override
  void initState() {
    super.initState();
    _unsubscribe = atlasSdk.watchStats((stats) {
      setState(() {
        _unreadCount = stats.conversations
            .fold(0, (sum, conversation) => sum + conversation.closed ? 0 : conversation.unread);
      });
    });
  }

  @override
  void dispose() {
    _unsubscribe?.call();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: atlasSdk.Widget()
    );
  }

  // ...
}