Archethic Messaging SDK developped on Dart
This library aims to provide a easy way to manage a decentralized messaging platform on the Archethic Public Blockchain. With the help of a smart contract, you can manage discussions and associated messages.
All API are available in messaging_service.dart
file.
To use the MessagingService
class, you should include the archethic_lib_dart
and archethic_messaging_lib_dart
packages in your Dart project. Add the following dependencies to your pubspec.yaml
file:
dependencies:
archethic_lib_dart: ^<version>
archethic_messaging_lib_dart: ^<version>
import 'package:archethic_lib_dart/archethic_lib_dart.dart' as archethic;
import 'package:archethic_messaging_lib_dart/archethic_messaging_lib_dart';
void main() {
// Initialize your keychain and API service as needed.
archethic.Keychain keychain = ...; // Initialize your keychain
archethic.ApiService apiService = ...; // Initialize your API service
// Create an instance of MessagingService
MessagingService messagingService = MessagingService(
logsActivation: true, // Set to true to enable logging
);
}
Creates a new discussion on the blockchain.
Future<({
archethic.Transaction transaction,
archethic.KeyPair previousKeyPair
})> createDiscussion({
required archethic.Keychain keychain,
required archethic.ApiService apiService,
required List<String> membersPubKey,
required String discussionName,
required List<String> adminsPubKey,
required String adminAddress,
required String serviceName,
})
Parameters:
keychain
: Keychain used to send transactions to the blockchain.apiService
: API service with blockchain integration.membersPubKey
: List of public keys of all discussion members.discussionName
: Name of the discussion.adminsPubKey
: List of public keys of all discussion administrators.adminAddress
: Address of the admin who wants to add members (provisions the SC's chain to manage fees).serviceName
: Service name in the current keychain (admin).- Returns a future with transaction and previous key pair information.
Updates an existing discussion on the blockchain.
Future<({
archethic.Transaction transaction,
archethic.KeyPair previousKeyPair
})> updateDiscussion({
required archethic.Keychain keychain,
required archethic.ApiService apiService,
required String discussionSCAddress,
required List<String> membersPubKey,
required String discussionName,
required List<String> adminsPubKey,
required String adminAddress,
required String serviceName,
required archethic.KeyPair adminKeyPair,
bool updateSCAESKey = false,
})
Parameters:
keychain
: Keychain used to send transactions to the blockchain.apiService
: API service with blockchain integration.membersPubKey
: List of public keys of all discussion members.discussionName
: Name of the discussion.adminsPubKey
: List of public keys of all discussion administrators.adminAddress
: Address of the admin who wants to add members (provisions the SC's chain to manage fees).serviceName
: Service name in the current keychain (admin).- Returns a future with transaction and previous key pair information.
Updates an existing discussion on the blockchain.
Future<({
archethic.Transaction transaction,
archethic.KeyPair previousKeyPair
})> updateDiscussion({
required archethic.Keychain keychain,
required archethic.ApiService apiService,
required String discussionSCAddress,
required List<String> membersPubKey,
required String discussionName,
required List<String> adminsPubKey,
required String adminAddress,
required String serviceName,
required archethic.KeyPair adminKeyPair,
bool updateSCAESKey = false,
})
Parameters:
keychain
: Keychain used to send transactions to the blockchain.apiService
: API service with blockchain integration.discussionSCAddress
: Smart contract's address for the discussion.membersPubKey
: List of public keys of all discussion members.discussionName
: Name of the discussion.adminsPubKey
: List of public keys of all discussion administrators.adminAddress
: Address of the admin who wants to add members (provisions the SC's chain to manage fees).serviceName
: Service name in the current keychain (admin).adminKeyPair
: Key pair of the admin.updateSCAESKey
: Update the AES key if set to true.- Returns a future with transaction and previous key pair information.
Retrieves a discussion from its address on the blockchain.
Future<AEDiscussion?> getDiscussion({
required archethic.ApiService apiService,
required String discussionSCAddress,
required archethic.KeyPair keyPair,
})
Parameters:
apiService
: API service with blockchain integration.discussionSCAddress
: Smart contract's address for the discussion.keyPair
: Key pair of the requester to check if the discussion's content can be decrypted.- Returns an AEDiscussion object or null if not found.
Future<String> getDiscussionLastProperties({
required archethic.ApiService apiService,
required String discussionSCAddress,
required archethic.KeyPair readerKeyPair,
})
Parameters:
apiService
: API service with blockchain integration.discussionSCAddress
: Smart contract's address for the discussion.readerKeyPair
: Key pair of the reader to check if the discussion's content can be decrypted.
Reads messages in an existing discussion on the blockchain.
Future<List<AEMessage>> readMessages({
required archethic.ApiService apiService,
required String discussionSCAddress,
required archethic.KeyPair readerKeyPair,
int limit = 0,
int pagingOffset = 0,
})
Parameters:
apiService
: API service with blockchain integration.discussionSCAddress
: Smart contract's address for the discussion.readerKeyPair
: Key pair of the reader.limit
: Limit the number of messages to retrieve (default is 0, which retrieves all).pagingOffset
: Offset for paging through messages.- Returns a list of AEMessage objects.
Sends a message in an existing discussion on the blockchain.
Future<({
archethic.Address transactionAddress,
archethic.KeyPair previousKeyPair
})> sendMessage({
required archethic.Keychain keychain,
required archethic.ApiService apiService,
required String discussionSCAddress,
required String messageContent,
required String senderAddress,
required String senderServiceName,
required archethic.KeyPair senderKeyPair,
})
Parameters:
keychain
: Keychain used to send transactions to the blockchain.apiService
: API service with blockchain integration.discussionSCAddress
: Smart contract's address for the discussion.messageContent
: Content of the message (not encrypted).senderAddress
: Address of the member who wants to send the message.senderServiceName
: Service name in the current keychain (sender).senderKeyPair
: Key pair of the sender.- Returns a future with transaction address and previous key pair information.
Future<({
archethic.Transaction transaction,
archethic.KeyPair previousKeyPair
})> buildMessage({
required archethic.Keychain keychain,
required archethic.ApiService apiService,
required String discussionSCAddress,
required String messageContent,
required String senderAddress,
required String senderServiceName,
required archethic.KeyPair senderKeyPair,
})
Parameters:
keychain
: Keychain used to send transactions to the blockchain.apiService
: API service with blockchain integration.discussionSCAddress
: Smart contract's address for the discussion.messageContent
: Content of the message (not encrypted).senderAddress
: Address of the member who wants to send the message.senderServiceName
: Service name in the current keychain (sender).senderKeyPair
: Key pair of the sender.- Returns a future with transaction address and previous key pair information.
dart test --exclude-tags noCI