tsoj_flutter_client 0.0.1 copy "tsoj_flutter_client: ^0.0.1" to clipboard
tsoj_flutter_client: ^0.0.1 copied to clipboard

A Flutter/Dart client library for TSOJ API. Provides authentication, billing, and other TSOJ services access using Dio with full cookie support.

example/tsoj_flutter_client_example.dart

import 'package:tsoj_flutter_client/tsoj_flutter_client.dart';

void main() async {
  // Example 1: Create client using factory function
  final client = createTsojClient(
    publishableKey: 'your-publishable-key-here',
    baseURL: 'https://id.tsoj.com',
  );

  print('=== TSOJ Flutter Client Examples ===\n');

  // Example 2: Password Sign Up
  print('1. Password Sign Up');
  try {
    final signupResult = await client.auth.passwordSignup(
      PasswordSignupRequestPayload(
        email: 'user@example.com',
        password: 'securePassword123',
        passwordRepeat: 'securePassword123',
        name: 'John Doe',
      ),
    );
    print('   Status: ${signupResult.status}');
    print('   Message: ${signupResult.data.message}\n');
  } catch (e) {
    print('   Error: $e\n');
  }

  // Example 3: Password Sign In
  print('2. Password Sign In');
  try {
    final signinResult = await client.auth.passwordSignin(
      PasswordSigninRequestPayload(
        email: 'user@example.com',
        password: 'securePassword123',
      ),
    );
    print('   Status: ${signinResult.status}');
    print('   Message: ${signinResult.data.message}\n');
  } catch (e) {
    print('   Error: $e\n');
  }

  // Example 4: Magic Link Sign In
  print('3. Magic Link Sign In');
  try {
    final magicResult = await client.auth.magicSignin(
      MagicSigninRequestPayload(email: 'user@example.com'),
    );
    print('   Status: ${magicResult.status}');
    print('   Message: ${magicResult.data.message}\n');
  } catch (e) {
    print('   Error: $e\n');
  }

  // Example 5: Get Available Payment Gateways
  print('4. Get Available Payment Gateways');
  try {
    final gateways = await client.getAvailableGateways();
    print(
      '   Available gateways: ${gateways.gateways.map((g) => g.value).join(', ')}\n',
    );
  } catch (e) {
    print('   Error: $e\n');
  }

  // Example 6: Get Bank Transfer Details
  print('5. Get Bank Transfer Details');
  try {
    final bankDetails = await client.getBankTransferDetails();
    print('   Bank: ${bankDetails.details.bankName}');
    print('   Account: ${bankDetails.details.accountNumber}');
    print('   IBAN: ${bankDetails.details.iban}');
    print('   Currency: ${bankDetails.details.currency}\n');
  } catch (e) {
    print('   Error: $e\n');
  }

  // Example 7: Using direct instantiation
  print('6. Direct Client Instantiation');
  try {
    final directClient = TsojClientFactory(
      TsojClientConfig(
        publishableKey: 'your-publishable-key',
        baseURL: 'https://id.tsoj.com',
      ),
    );
    print('   Client created successfully');
    print('   Auth client type: ${directClient.auth.runtimeType}');
    print('   API client type: ${directClient.api.runtimeType}\n');
  } catch (e) {
    print('   Error: $e\n');
  }

  // Example 8: Sign up with metadata
  print('7. Sign Up with Custom Metadata');
  try {
    final metadataSignup = await client.auth.passwordSignup(
      PasswordSignupRequestPayload(
        email: 'user@example.com',
        password: 'password123',
        passwordRepeat: 'password123',
        name: 'Jane Doe',
        metadata: {
          'source': 'mobile_app',
          'referral': 'friend',
          'preferences': {'newsletter': true, 'notifications': true},
        },
      ),
    );
    print('   Status: ${metadataSignup.status}');
    print('   Message: ${metadataSignup.data.message}\n');
  } catch (e) {
    print('   Error: $e\n');
  }

  // Example 9: Create Custom Backend Client (shares cookies)
  print('8. Create Custom Backend Client');
  try {
    // Create a client for your own backend that shares TSOJ cookies
    final myBackendClient = client.createCustomBackendClient(
      baseURL: 'https://my-backend.com/api',
    );

    print('   Custom backend client created');
    print('   Base URL: ${myBackendClient.dio.options.baseUrl}');
    print('   Shares cookies with TSOJ client: ✓');
    print('   Can call your backend with TSOJ session\n');

    // Example: Call your own backend with TSOJ session
    // final userProfile = await myBackendClient.get('/user/profile');
  } catch (e) {
    print('   Error: $e\n');
  }

  // Example 10: Cookie Management
  print('9. Cookie Management (Logout)');
  try {
    // After signing in, cookies are automatically stored
    // Clear all cookies (useful for logout)
    await client.api.clearCookies();
    print('   Cookies cleared successfully');
    print('   Session terminated\n');
  } catch (e) {
    print('   Error: $e\n');
  }

  print('=== Examples Complete ===');
}
0
likes
150
points
8
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter/Dart client library for TSOJ API. Provides authentication, billing, and other TSOJ services access using Dio with full cookie support.

Homepage
Repository (GitLab)
View/report issues

License

MIT (license)

Dependencies

cookie_jar, dio, dio_cookie_manager

More

Packages that depend on tsoj_flutter_client