├── doc
├── FlutterClientSdk.md
└── Develop.md
├── test
├── hive_testing_path
│ ├── chatwootuserboxnames.users.hive
│ ├── chatwootcontactboxnames.contacts.hive
│ ├── chatwootmessagesboxnames.messages.hive
│ ├── chatwootconversationboxnames.conversations.hive
│ ├── chatwootuserboxnames.client_instance_to_user.hive
│ ├── chatwootcontactboxnames.client_instance_to_contacts.hive
│ ├── chatwootmessagesboxnames.messages_to_client_instance_key.hive
│ └── chatwootconversationboxnames.client_instance_to_conversations.hive
├── chatwoot_sdk_test.dart
├── resources
│ ├── contact.json
│ ├── websocket_presence_update.json
│ ├── message.json
│ ├── conversation.json
│ ├── websocket_message_updated.json
│ ├── websocket_message_created.json
│ ├── messages.json
│ ├── conversations.json
│ ├── websocket_conversation_status_changed.json
│ ├── websocket_conversation_typing_off.json
│ └── websocket_conversation_typing_on.json
├── utils
│ └── test_resources_util.dart
├── data
│ ├── local
│ │ ├── dao
│ │ │ ├── non_persisted_chatwoot_users_dao_test.dart
│ │ │ ├── non_persisted_chatwoot_contact_dao_test.dart
│ │ │ ├── non_persisted_chatwoot_conversation_dao_test.dart
│ │ │ ├── persisted_chatwoot_users_dao_test.dart
│ │ │ ├── persisted_chatwoot_contact_dao_test.dart
│ │ │ ├── persisted_chatwoot_conversation_dao_test.dart
│ │ │ ├── non_persisted_chatwoot_messages_dao_test.dart
│ │ │ └── persisted_chatwoot_messages_dao_test.dart
│ │ └── local_storage_test.dart
│ └── remote
│ │ └── chatwoot_client_auth_service_test.dart
└── chatwoot_client_test.mocks.dart
├── example
├── ios
│ ├── Runner
│ │ ├── Runner-Bridging-Header.h
│ │ ├── Assets.xcassets
│ │ │ ├── LaunchImage.imageset
│ │ │ │ ├── LaunchImage.png
│ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ ├── README.md
│ │ │ │ └── Contents.json
│ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ ├── Icon-App-83.5x83.5@2x.png
│ │ │ │ └── Contents.json
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── Main.storyboard
│ │ │ └── LaunchScreen.storyboard
│ │ └── Info.plist
│ ├── Flutter
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ └── AppFrameworkInfo.plist
│ ├── Runner.xcodeproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── .gitignore
│ ├── Podfile.lock
│ └── Podfile
├── web
│ ├── favicon.png
│ ├── icons
│ │ ├── Icon-192.png
│ │ └── Icon-512.png
│ ├── manifest.json
│ └── index.html
├── android
│ ├── gradle.properties
│ ├── app
│ │ ├── src
│ │ │ ├── main
│ │ │ │ ├── res
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── drawable
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── drawable-v21
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── values
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── values-night
│ │ │ │ │ │ └── styles.xml
│ │ │ │ ├── kotlin
│ │ │ │ │ └── com
│ │ │ │ │ │ └── example
│ │ │ │ │ │ └── example
│ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ └── AndroidManifest.xml
│ │ │ ├── debug
│ │ │ │ └── AndroidManifest.xml
│ │ │ └── profile
│ │ │ │ └── AndroidManifest.xml
│ │ └── build.gradle
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ ├── .gitignore
│ ├── settings.gradle
│ └── build.gradle
├── assets
│ └── chatwoot_logo.png
├── .metadata
├── README.md
├── .gitignore
├── test
│ └── widget_test.dart
├── lib
│ └── main.dart
└── pubspec.yaml
├── analysis_options.yaml
├── assets
└── logo_grey.png
├── lib
├── ui
│ ├── webview_widget
│ │ ├── constants.dart
│ │ ├── utils.dart
│ │ ├── chatwoot_widget.dart
│ │ └── webview.dart
│ ├── chatwoot_l10n.dart
│ ├── chatwoot_chat_dialog.dart
│ └── chatwoot_chat_theme.dart
├── chatwoot_sdk.dart
├── repository_parameters.dart
├── data
│ ├── remote
│ │ ├── chatwoot_client_exception.dart
│ │ ├── requests
│ │ │ ├── chatwoot_action.dart
│ │ │ ├── chatwoot_new_message_request.dart
│ │ │ └── chatwoot_action_data.dart
│ │ ├── service
│ │ │ ├── chatwoot_client_auth_service.dart
│ │ │ └── chatwoot_client_api_interceptor.dart
│ │ └── responses
│ │ │ └── chatwoot_event.dart
│ └── local
│ │ ├── entity
│ │ ├── chatwoot_conversation.dart
│ │ ├── chatwoot_contact.dart
│ │ ├── chatwoot_user.dart
│ │ └── chatwoot_message.dart
│ │ ├── dao
│ │ ├── chatwoot_user_dao.dart
│ │ ├── chatwoot_contact_dao.dart
│ │ ├── chatwoot_conversation_dao.dart
│ │ └── chatwoot_messages_dao.dart
│ │ └── local_storage.dart
├── chatwoot_parameters.dart
├── chatwoot_callbacks.dart
└── chatwoot_client.dart
├── .metadata
├── dartdoc_options.yaml
├── CHANGELOG.md
├── .github
└── workflows
│ └── develop-actions.yml
├── LICENSE
├── .gitignore
└── pubspec.yaml
/doc/FlutterClientSdk.md:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/hive_testing_path/chatwootuserboxnames.users.hive:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/hive_testing_path/chatwootcontactboxnames.contacts.hive:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/hive_testing_path/chatwootmessagesboxnames.messages.hive:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/hive_testing_path/chatwootconversationboxnames.conversations.hive:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/hive_testing_path/chatwootuserboxnames.client_instance_to_user.hive:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/hive_testing_path/chatwootcontactboxnames.client_instance_to_contacts.hive:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/example/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/test/hive_testing_path/chatwootmessagesboxnames.messages_to_client_instance_key.hive:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/hive_testing_path/chatwootconversationboxnames.client_instance_to_conversations.hive:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | analyzer:
2 | exclude:
3 | - "**.g.dart"
4 | - "**.mocks.dart"
5 |
--------------------------------------------------------------------------------
/assets/logo_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/assets/logo_grey.png
--------------------------------------------------------------------------------
/example/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/web/favicon.png
--------------------------------------------------------------------------------
/example/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/example/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/example/assets/chatwoot_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/assets/chatwoot_logo.png
--------------------------------------------------------------------------------
/example/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/test/chatwoot_sdk_test.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_test/flutter_test.dart';
2 |
3 |
4 | void main() {
5 | test('adds one to input values', () {
6 | expect(1+1, 2);
7 | });
8 | }
9 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/test/resources/contact.json:
--------------------------------------------------------------------------------
1 | {
2 | "source_id": "bab6c264-901b-4821-bdc4-e6493ca84289",
3 | "id": 1,
4 | "name": "test",
5 | "email": "test@test.com",
6 | "pubsub_token": "vxrAesh9TjFkEeQbSTyyBNYY"
7 | }
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.example
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chatwoot/chatwoot-flutter-sdk/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip
7 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/ui/webview_widget/constants.dart:
--------------------------------------------------------------------------------
1 | const WOOT_PREFIX = 'chatwoot-widget:';
2 |
3 | class PostMessageEvents {
4 | static const SET_LOCALE = 'set-locale';
5 | static const SET_CUSTOM_ATTRIBUTES = 'set-custom-attributes';
6 | static const SET_USER = 'set-user';
7 | }
8 |
9 | const BG_COLOR = '#f1f5f8';
10 | const COLOR_WHITE = '#fff';
11 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: b1395592de68cc8ac4522094ae59956dd21a91db
8 | channel: stable
9 |
10 | project_type: package
11 |
--------------------------------------------------------------------------------
/example/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: b1395592de68cc8ac4522094ae59956dd21a91db
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/example/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/test/resources/websocket_presence_update.json:
--------------------------------------------------------------------------------
1 | {
2 | "identifier": "{\"channel\":\"RoomChannel\",\"pubsub_token\":\"token\",\"account_id\":1,\"user_id\":1}",
3 | "message": {
4 | "event": "presence.update",
5 | "data": {
6 | "account_id": 1,
7 | "users": {
8 | "1": "online"
9 | },
10 | "contacts": {
11 | "1": "online"
12 | }
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/dartdoc_options.yaml:
--------------------------------------------------------------------------------
1 | dartdoc:
2 | categories:
3 | "Installation":
4 | markdown: README.md
5 | name: Installation
6 | "Flutter Client Sdk":
7 | name: FlutterClientSdk
8 | categoryOrder: ["Installation", "Flutter Client Sdk"]
9 | examplePathPrefix: '/example'
10 | showUndocumentedCategories: false
11 | ignore:
12 | - ambiguous-doc-reference
13 | errors:
14 | - unresolved-doc-reference
15 | warnings:
16 | - tool-error
--------------------------------------------------------------------------------
/example/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/example/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/lib/chatwoot_sdk.dart:
--------------------------------------------------------------------------------
1 | library chatwoot_sdk;
2 |
3 | export 'package:chatwoot_sdk/data/local/entity/chatwoot_message.dart';
4 | export 'package:chatwoot_sdk/data/local/entity/chatwoot_user.dart';
5 | export 'package:chatwoot_sdk/data/remote/chatwoot_client_exception.dart';
6 | export 'package:chatwoot_sdk/ui/chatwoot_chat_dialog.dart';
7 | export 'package:chatwoot_sdk/ui/chatwoot_chat_page.dart';
8 | export 'package:chatwoot_sdk/ui/webview_widget/chatwoot_widget.dart';
9 |
10 | export 'chatwoot_callbacks.dart';
11 | export 'chatwoot_client.dart';
12 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/test/resources/message.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 8,
3 | "content": "postman message",
4 | "message_type": 0,
5 | "content_type": "text",
6 | "content_attributes": {},
7 | "created_at": 1626155918,
8 | "conversation_id": 2,
9 | "sender": {
10 | "additional_attributes": {},
11 | "email": "test@test.com",
12 | "id": 1,
13 | "identifier": null,
14 | "name": "test",
15 | "phone_number": null,
16 | "pubsub_token": "vxrAesh9TjFkEeQbSTyyBNYY",
17 | "thumbnail": "https://www.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=404",
18 | "type": "contact"
19 | }
20 | }
--------------------------------------------------------------------------------
/lib/repository_parameters.dart:
--------------------------------------------------------------------------------
1 | import 'package:chatwoot_sdk/chatwoot_callbacks.dart';
2 | import 'package:chatwoot_sdk/chatwoot_parameters.dart';
3 | import 'package:chatwoot_sdk/di/modules.dart';
4 |
5 | /// Represent all needed parameters necessary for [chatwootRepositoryProvider] to successfully provide an instance
6 | /// of [ChatwootRepository].
7 | class RepositoryParameters {
8 | /// See [ChatwootParameters]
9 | ChatwootParameters params;
10 |
11 | /// See [ChatwootCallbacks]
12 | ChatwootCallbacks callbacks;
13 |
14 | RepositoryParameters({required this.params, required this.callbacks});
15 | }
16 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | # example
2 |
3 | An example project for chatwoot client sdk
4 |
5 | ## Getting Started
6 |
7 | This project is a starting point for a Flutter application.
8 |
9 | A few resources to get you started if this is your first Flutter project:
10 |
11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
13 |
14 | For help getting started with Flutter, view our
15 | [online documentation](https://flutter.dev/docs), which offers tutorials,
16 | samples, guidance on mobile development, and a full API reference.
17 |
--------------------------------------------------------------------------------
/lib/data/remote/chatwoot_client_exception.dart:
--------------------------------------------------------------------------------
1 | /// {@category FlutterClientSdk}
2 | class ChatwootClientException implements Exception {
3 | String cause;
4 | dynamic data;
5 | ChatwootClientExceptionType type;
6 |
7 | ChatwootClientException(this.cause, this.type, {this.data});
8 | }
9 |
10 | /// {@category FlutterClientSdk}
11 | enum ChatwootClientExceptionType {
12 | CREATE_CLIENT_FAILED,
13 | SEND_MESSAGE_FAILED,
14 | CREATE_CONTACT_FAILED,
15 | CREATE_CONVERSATION_FAILED,
16 | GET_MESSAGES_FAILED,
17 | GET_CONTACT_FAILED,
18 | GET_CONVERSATION_FAILED,
19 | UPDATE_CONTACT_FAILED,
20 | UPDATE_MESSAGE_FAILED
21 | }
22 |
--------------------------------------------------------------------------------
/test/resources/conversation.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 7,
3 | "inbox_id": 1,
4 | "contact_last_seen_at": 0,
5 | "status": "open",
6 | "messages": [],
7 | "contact": {
8 | "id": 1,
9 | "name": "test",
10 | "email": "test@test.com",
11 | "phone_number": null,
12 | "account_id": 5,
13 | "created_at": "2021-07-12T16:09:34.854Z",
14 | "updated_at": "2021-07-12T16:34:14.048Z",
15 | "pubsub_token": "vxrAesh9TjFkEeQbSTyyBNYY",
16 | "additional_attributes": {},
17 | "identifier": null,
18 | "custom_attributes": {},
19 | "last_activity_at": "2021-07-12T16:34:13.924Z",
20 | "label_list": []
21 | }
22 | }
--------------------------------------------------------------------------------
/example/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/example/web/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example",
3 | "short_name": "example",
4 | "start_url": ".",
5 | "display": "standalone",
6 | "background_color": "#0175C2",
7 | "theme_color": "#0175C2",
8 | "description": "An example project for chatwoot client sdk",
9 | "orientation": "portrait-primary",
10 | "prefer_related_applications": false,
11 | "icons": [
12 | {
13 | "src": "icons/Icon-192.png",
14 | "sizes": "192x192",
15 | "type": "image/png"
16 | },
17 | {
18 | "src": "icons/Icon-512.png",
19 | "sizes": "512x512",
20 | "type": "image/png"
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/lib/data/remote/requests/chatwoot_action.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | import 'chatwoot_action_data.dart';
4 |
5 | part 'chatwoot_action.g.dart';
6 |
7 | @JsonSerializable(explicitToJson: true)
8 | class ChatwootAction {
9 | @JsonKey()
10 | final String identifier;
11 |
12 | @JsonKey()
13 | final String command;
14 |
15 | @JsonKey()
16 | final ChatwootActionData? data;
17 |
18 | ChatwootAction({required this.identifier, this.data, required this.command});
19 |
20 | factory ChatwootAction.fromJson(Map json) =>
21 | _$ChatwootActionFromJson(json);
22 |
23 | Map toJson() => _$ChatwootActionToJson(this);
24 | }
25 |
--------------------------------------------------------------------------------
/example/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.7.20'
3 | repositories {
4 | google()
5 | jcenter()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:7.4.1'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | jcenter()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/lib/chatwoot_parameters.dart:
--------------------------------------------------------------------------------
1 | import 'package:equatable/equatable.dart';
2 |
3 | class ChatwootParameters extends Equatable {
4 | final bool isPersistenceEnabled;
5 | final String baseUrl;
6 | final String clientInstanceKey;
7 | final String inboxIdentifier;
8 | final String? userIdentifier;
9 |
10 | ChatwootParameters(
11 | {required this.isPersistenceEnabled,
12 | required this.baseUrl,
13 | required this.inboxIdentifier,
14 | required this.clientInstanceKey,
15 | this.userIdentifier});
16 |
17 | @override
18 | List