Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#146 add disable user account #185

Merged
merged 25 commits into from
Sep 15, 2023
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
53a136a
disableUserAccountRequests コレクションのドキュメントモデルの定義
haterain0203 Sep 5, 2023
b46002a
ログインしている場合に限り、ドロワーに「退会する」ボタンを表示する
haterain0203 Sep 5, 2023
e6fcf03
退会確認ダイアログの追加
haterain0203 Sep 5, 2023
81af8bb
controllerを作成し、ListTileのonTap処理をcontrollerへ移管
haterain0203 Sep 5, 2023
e2a15ab
Serviceクラスの作成とuserIdを渡す処理の修正
haterain0203 Sep 5, 2023
9ce0155
DisableUserAccountRequestRepositoryの定義
haterain0203 Sep 7, 2023
bb7180e
ドキュメントモデルの修正(複数形「s」の削除)
haterain0203 Sep 7, 2023
c85225a
ドキュメントモデル修正に伴うRepositoryの修正
haterain0203 Sep 7, 2023
a69d8d5
_exportの更新
haterain0203 Sep 7, 2023
cea463e
firestore_repositoryの更新
haterain0203 Sep 7, 2023
dbcfdf3
_exportの修正
haterain0203 Sep 7, 2023
99e7ed7
Serviceクラスの更新
haterain0203 Sep 7, 2023
c3d7849
TODO追加
haterain0203 Sep 7, 2023
4dcec12
Merge branch 'main' of https://github.com/KosukeSaigusa/mottai-flutte…
haterain0203 Sep 7, 2023
590db5b
Visibilityを削除し、AuthDependentBuilderに変更
haterain0203 Sep 8, 2023
ca7cc8a
reformat
haterain0203 Sep 8, 2023
abc8a41
onCreateDisableUserAccountRequest の追加
haterain0203 Sep 9, 2023
1d3e8cf
onCreateDisableUserAccountRequest を index.ts に追加
haterain0203 Sep 11, 2023
9c7d232
disable にしたのち、サインアウトさせる
haterain0203 Sep 11, 2023
4e1c5b1
Serviceクラスの修正
haterain0203 Sep 11, 2023
2aa240d
エラーハンドリング追加
haterain0203 Sep 11, 2023
885cfde
importすべきパッケージの修正
haterain0203 Sep 11, 2023
e70647b
退会処理が完了したことをユーザーに通知するダイアログを表示する 処理の追加
haterain0203 Sep 11, 2023
f74b636
退会処理後(disableにした後)にそのアカウントでログインしようとした際のエラーハンドリング追加
haterain0203 Sep 11, 2023
ee6ee8a
Merge branch 'main' of https://github.com/KosukeSaigusa/mottai-flutte…
haterain0203 Sep 11, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
export 'chat_message.dart';
export 'chat_room.dart';
export 'disable_user_account_request.dart';
export 'force_update_config.dart';
export 'host.dart';
export 'host_location.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutterfire_gen_annotation/flutterfire_gen_annotation.dart';

part 'disable_user_account_request.flutterfire_gen.dart';

@FirestoreDocument(
path: 'disableUserAccountRequests',
documentName: 'disableUserAccountRequest',
)
class DisableUserAccountRequest {
const DisableUserAccountRequest({
required this.userId,
this.createdAt,
});

final String userId;

@AlwaysUseFieldValueServerTimestampWhenCreating()
final DateTime? createdAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@
// coverage:ignore-file
// ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark

part of 'disable_user_account_request.dart';

class ReadDisableUserAccountRequest {
const ReadDisableUserAccountRequest({
required this.disableUserAccountRequestId,
required this.path,
required this.userId,
required this.createdAt,
});

final String disableUserAccountRequestId;

final String path;

final String userId;

final DateTime? createdAt;

factory ReadDisableUserAccountRequest._fromJson(Map<String, dynamic> json) {
return ReadDisableUserAccountRequest(
disableUserAccountRequestId:
json['disableUserAccountRequestId'] as String,
path: json['path'] as String,
userId: json['userId'] as String,
createdAt: (json['createdAt'] as Timestamp?)?.toDate(),
);
}

factory ReadDisableUserAccountRequest.fromDocumentSnapshot(
DocumentSnapshot ds) {
final data = ds.data()! as Map<String, dynamic>;
return ReadDisableUserAccountRequest._fromJson(<String, dynamic>{
...data,
'disableUserAccountRequestId': ds.id,
'path': ds.reference.path,
});
}
}

class CreateDisableUserAccountRequest {
const CreateDisableUserAccountRequest({
required this.userId,
});

final String userId;

Map<String, dynamic> toJson() {
return {
'userId': userId,
'createdAt': FieldValue.serverTimestamp(),
};
}
}

class UpdateDisableUserAccountRequest {
const UpdateDisableUserAccountRequest({
this.userId,
this.createdAt,
});

final String? userId;
final DateTime? createdAt;

Map<String, dynamic> toJson() {
return {
if (userId != null) 'userId': userId,
if (createdAt != null) 'createdAt': createdAt,
};
}
}

class DeleteDisableUserAccountRequest {}

/// Provides a reference to the disableUserAccountRequests collection for reading.
final readDisableUserAccountRequestCollectionReference = FirebaseFirestore
.instance
.collection('disableUserAccountRequests')
.withConverter<ReadDisableUserAccountRequest>(
fromFirestore: (ds, _) =>
ReadDisableUserAccountRequest.fromDocumentSnapshot(ds),
toFirestore: (_, __) => throw UnimplementedError(),
);

/// Provides a reference to a disableUserAccountRequest document for reading.
DocumentReference<ReadDisableUserAccountRequest>
readDisableUserAccountRequestDocumentReference({
required String disableUserAccountRequestId,
}) =>
readDisableUserAccountRequestCollectionReference
.doc(disableUserAccountRequestId);

/// Provides a reference to the disableUserAccountRequests collection for creating.
final createDisableUserAccountRequestCollectionReference = FirebaseFirestore
.instance
.collection('disableUserAccountRequests')
.withConverter<CreateDisableUserAccountRequest>(
fromFirestore: (_, __) => throw UnimplementedError(),
toFirestore: (obj, _) => obj.toJson(),
);

/// Provides a reference to a disableUserAccountRequest document for creating.
DocumentReference<CreateDisableUserAccountRequest>
createDisableUserAccountRequestDocumentReference({
required String disableUserAccountRequestId,
}) =>
createDisableUserAccountRequestCollectionReference
.doc(disableUserAccountRequestId);

/// Provides a reference to the disableUserAccountRequests collection for updating.
final updateDisableUserAccountRequestCollectionReference = FirebaseFirestore
.instance
.collection('disableUserAccountRequests')
.withConverter<UpdateDisableUserAccountRequest>(
fromFirestore: (_, __) => throw UnimplementedError(),
toFirestore: (obj, _) => obj.toJson(),
);

/// Provides a reference to a disableUserAccountRequest document for updating.
DocumentReference<UpdateDisableUserAccountRequest>
updateDisableUserAccountRequestDocumentReference({
required String disableUserAccountRequestId,
}) =>
updateDisableUserAccountRequestCollectionReference
.doc(disableUserAccountRequestId);

/// Provides a reference to the disableUserAccountRequests collection for deleting.
final deleteDisableUserAccountRequestCollectionReference = FirebaseFirestore
.instance
.collection('disableUserAccountRequests')
.withConverter<DeleteDisableUserAccountRequest>(
fromFirestore: (_, __) => throw UnimplementedError(),
toFirestore: (_, __) => throw UnimplementedError(),
);

/// Provides a reference to a disableUserAccountRequest document for deleting.
DocumentReference<DeleteDisableUserAccountRequest>
deleteDisableUserAccountRequestDocumentReference({
required String disableUserAccountRequestId,
}) =>
deleteDisableUserAccountRequestCollectionReference
.doc(disableUserAccountRequestId);

/// Manages queries against the disableUserAccountRequests collection.
class DisableUserAccountRequestQuery {
/// Fetches [ReadDisableUserAccountRequest] documents.
Future<List<ReadDisableUserAccountRequest>> fetchDocuments({
GetOptions? options,
Query<ReadDisableUserAccountRequest>? Function(
Query<ReadDisableUserAccountRequest> query)?
queryBuilder,
int Function(ReadDisableUserAccountRequest lhs,
ReadDisableUserAccountRequest rhs)?
compare,
}) async {
Query<ReadDisableUserAccountRequest> query =
readDisableUserAccountRequestCollectionReference;
if (queryBuilder != null) {
query = queryBuilder(query)!;
}
final qs = await query.get(options);
final result = qs.docs.map((qds) => qds.data()).toList();
if (compare != null) {
result.sort(compare);
}
return result;
}

/// Subscribes [DisableUserAccountRequest] documents.
Stream<List<ReadDisableUserAccountRequest>> subscribeDocuments({
Query<ReadDisableUserAccountRequest>? Function(
Query<ReadDisableUserAccountRequest> query)?
queryBuilder,
int Function(ReadDisableUserAccountRequest lhs,
ReadDisableUserAccountRequest rhs)?
compare,
bool includeMetadataChanges = false,
bool excludePendingWrites = false,
}) {
Query<ReadDisableUserAccountRequest> query =
readDisableUserAccountRequestCollectionReference;
if (queryBuilder != null) {
query = queryBuilder(query)!;
}
var streamQs =
query.snapshots(includeMetadataChanges: includeMetadataChanges);
if (excludePendingWrites) {
streamQs = streamQs.where((qs) => !qs.metadata.hasPendingWrites);
}
return streamQs.map((qs) {
final result = qs.docs.map((qds) => qds.data()).toList();
if (compare != null) {
result.sort(compare);
}
return result;
});
}

/// Fetches a specific [ReadDisableUserAccountRequest] document.
Future<ReadDisableUserAccountRequest?> fetchDocument({
required String disableUserAccountRequestId,
GetOptions? options,
}) async {
final ds = await readDisableUserAccountRequestDocumentReference(
disableUserAccountRequestId: disableUserAccountRequestId,
).get(options);
return ds.data();
}

/// Subscribes a specific [DisableUserAccountRequest] document.
Stream<ReadDisableUserAccountRequest?> subscribeDocument({
required String disableUserAccountRequestId,
bool includeMetadataChanges = false,
bool excludePendingWrites = false,
}) {
var streamDs = readDisableUserAccountRequestDocumentReference(
disableUserAccountRequestId: disableUserAccountRequestId,
).snapshots(includeMetadataChanges: includeMetadataChanges);
if (excludePendingWrites) {
streamDs = streamDs.where((ds) => !ds.metadata.hasPendingWrites);
}
return streamDs.map((ds) => ds.data());
}

/// Adds a [DisableUserAccountRequest] document.
Future<DocumentReference<CreateDisableUserAccountRequest>> add({
required CreateDisableUserAccountRequest createDisableUserAccountRequest,
}) =>
createDisableUserAccountRequestCollectionReference
.add(createDisableUserAccountRequest);

/// Sets a [DisableUserAccountRequest] document.
Future<void> set({
required String disableUserAccountRequestId,
required CreateDisableUserAccountRequest createDisableUserAccountRequest,
SetOptions? options,
}) =>
createDisableUserAccountRequestDocumentReference(
disableUserAccountRequestId: disableUserAccountRequestId,
).set(createDisableUserAccountRequest, options);

/// Updates a specific [DisableUserAccountRequest] document.
Future<void> update({
required String disableUserAccountRequestId,
required UpdateDisableUserAccountRequest updateDisableUserAccountRequest,
}) =>
updateDisableUserAccountRequestDocumentReference(
disableUserAccountRequestId: disableUserAccountRequestId,
).update(updateDisableUserAccountRequest.toJson());

/// Deletes a specific [DisableUserAccountRequest] document.
Future<void> delete({
required String disableUserAccountRequestId,
}) =>
deleteDisableUserAccountRequestDocumentReference(
disableUserAccountRequestId: disableUserAccountRequestId,
).delete();
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
export 'chat_message.dart';
export 'chat_room.dart';
export 'disable_user_account_request.dart';
export 'fcm_token.dart';
export 'force_update_config.dart';
export 'host.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import '../firestore_documents/disable_user_account_request.dart';

class DisableUserAccountRequestRepository {
final _query = DisableUserAccountRequestQuery();

/// [DisableUserAccountRequest] を作成する。
Future<void> setDisableUserAccountRequest({
required String userId,
}) =>
_query.set(
disableUserAccountRequestId: userId,
createDisableUserAccountRequest: CreateDisableUserAccountRequest(
userId: userId,
),
);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import 'package:firebase_common/firebase_common.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';

import '../../firestore_repository.dart';

final disableUserAccountRequestServiceProvider =
Provider.autoDispose<DisableUserAccountRequestService>(
(ref) => DisableUserAccountRequestService(
disableUserAccountRequestRepository: ref.watch(
disableUserAccountRequestRepositoryProvider,
),
),
);

class DisableUserAccountRequestService {
const DisableUserAccountRequestService({
required DisableUserAccountRequestRepository
disableUserAccountRequestRepository,
}) : _disableUserAccountRequestRepository =
disableUserAccountRequestRepository;

final DisableUserAccountRequestRepository
_disableUserAccountRequestRepository;

/// 引数で受ける [userId] を用いて [DisableUserAccountRequest] ドキュメントを作成する
Future<void> createDisableUserAccountRequest({
required String userId,
}) async {
await _disableUserAccountRequestRepository.setDisableUserAccountRequest(
userId: userId,
);
}
}
Loading