remoteSourceTemplate function

String remoteSourceTemplate(
  1. String feature
)

Implementation

String remoteSourceTemplate(String feature) =>
    '''
import 'package:dartz/dartz.dart';
import 'package:injectable/injectable.dart';
import 'package:workplanx/src/core/development/logger.dart';
import 'package:workplanx/src/core/enums/enums.dart';
import 'package:workplanx/src/core/local_storage/secure_storage.dart';
import 'package:workplanx/src/core/network/api_client.dart';
import 'package:workplanx/src/core/network/api_failure.dart';
import '../../data/endpoints/${feature}_endpoints.dart';
import '../../data/model/response/${feature}_response.dart';
import '../../data/model/request/${feature}_request.dart';

@LazySingleton()
class ${_cap(feature)}RemoteSource {
  ${_cap(feature)}RemoteSource(this._secureStorageService, this._apiClient);

  final SecureStorageService _secureStorageService;
  final ApiClient _apiClient;

  Future<Either<Failure, ${_cap(feature)}Response>> fetch${_cap(feature)}s({
    Fetch${_cap(feature)}Query? queryParam,
  }) async {
    final workspaceId = await _secureStorageService.getWorkspaceId;
    if (workspaceId == null) {
      return const Left(GeneralFailure('Workspace ID not found'));
    }

    final apiEndpoint = ${_cap(feature)}Endpoints.fetch${_cap(feature)}s(workspaceId: workspaceId);

    final response = await _apiClient.get<Map<String, dynamic>>(apiEndpoint, queryParams: queryParam?.toJson());

    return response.fold(
      Left.new,
      (result) => Right(${feature}ResponseFromJson(result)),
    );
  }
}
''';