Skip to content

Commit

Permalink
TW-692: Create UploadProfileInteractor
Browse files Browse the repository at this point in the history
  • Loading branch information
nqhhdev authored and hoangdat committed Oct 4, 2023
1 parent f357c69 commit 240a31f
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/di/global/get_it_initializer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import 'package:fluffychat/domain/usecase/send_file_interactor.dart';
import 'package:fluffychat/domain/usecase/send_file_on_web_interactor.dart';
import 'package:fluffychat/domain/usecase/send_image_interactor.dart';
import 'package:fluffychat/domain/usecase/send_images_interactor.dart';
import 'package:fluffychat/domain/usecase/settings/upload_profile_interactor.dart';
import 'package:fluffychat/event/twake_event_dispatcher.dart';
import 'package:fluffychat/utils/responsive/responsive_utils.dart';
import 'package:get_it/get_it.dart';
Expand Down Expand Up @@ -177,5 +178,8 @@ class GetItInitializer {
getIt.registerSingleton<TimelineSearchEventInteractor>(
TimelineSearchEventInteractor(),
);
getIt.registerSingleton<UploadProfileInteractor>(
UploadProfileInteractor(),
);
}
}
10 changes: 10 additions & 0 deletions lib/domain/app_state/settings/upload_profile_failure.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import 'package:fluffychat/app_state/failure.dart';

class UploadProfileFailure extends Failure {
final dynamic exception;

const UploadProfileFailure(this.exception) : super();

@override
List<Object?> get props => [exception];
}
8 changes: 8 additions & 0 deletions lib/domain/app_state/settings/upload_profile_loading.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import 'package:fluffychat/app_state/success.dart';

class UploadProfileLoading extends Success {
const UploadProfileLoading();

@override
List<Object?> get props => [];
}
19 changes: 19 additions & 0 deletions lib/domain/app_state/settings/upload_profile_success.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:fluffychat/app_state/success.dart';

class UploadProfileInitial extends Success {
@override
List<Object?> get props => [];
}

class UploadProfileSuccess extends Success {
final Uri? avatar;
final String? displayName;

const UploadProfileSuccess({
this.avatar,
this.displayName,
});

@override
List<Object?> get props => [avatar, displayName];
}
44 changes: 44 additions & 0 deletions lib/domain/usecase/settings/upload_profile_interactor.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import 'package:dartz/dartz.dart';
import 'package:fluffychat/app_state/failure.dart';
import 'package:fluffychat/app_state/success.dart';
import 'package:fluffychat/domain/app_state/settings/upload_profile_failure.dart';
import 'package:fluffychat/domain/app_state/settings/upload_profile_loading.dart';
import 'package:fluffychat/domain/app_state/settings/upload_profile_success.dart';
import 'package:matrix/matrix.dart';

class UploadProfileInteractor {
Stream<Either<Failure, Success>> execute({
required Client client,
required String userId,
Uri? avatarUrl,
bool isUpdateDisPlayName = false,
String? displayName,
}) async* {
yield const Right(UploadProfileLoading());
try {
Logs().d(
'UploadAvatarInteractor::execute(): Uri - $avatarUrl - displayName - $displayName',
);
if (avatarUrl != null) {
await client.setAvatarUrl(
userId,
avatarUrl,
);
}
if (displayName != null) {
await client.setDisplayName(userId, displayName);
}
yield Right(
UploadProfileSuccess(
displayName: displayName,
avatar: avatarUrl,
),
);
} catch (e) {
Logs().d(
'UploadAvatarInteractor::execute(): Exception - $e}',
);
yield Left(UploadProfileFailure(e));
}
}
}

0 comments on commit 240a31f

Please sign in to comment.