Skip to content

Commit

Permalink
fix circles not updated when created via profile page
Browse files Browse the repository at this point in the history
  • Loading branch information
LGro committed Jun 3, 2024
1 parent 8a6d6cb commit 43f05cc
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 44 deletions.
5 changes: 5 additions & 0 deletions lib/ui/profile/page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ Widget emails(List<Email> emails,
])),
if (onTap != null)
IconButton(
key: Key('emailsCirclesMgmt${i}'),
onPressed: () =>
onTap(i, _label(e.label.name, e.customLabel).data!),
icon: const Icon(Icons.add_task))
Expand Down Expand Up @@ -121,6 +122,7 @@ Widget phones(List<Phone> phones,
])),
if (onTap != null)
IconButton(
key: Key('phonesCirclesMgmt${i}'),
onPressed: () =>
onTap(i, _label(e.label.name, e.customLabel).data!),
icon: const Icon(Icons.add_task))
Expand Down Expand Up @@ -149,6 +151,7 @@ Widget websites(List<Website> websites,
])),
if (onTap != null)
IconButton(
key: Key('websitesCirclesMgmt${i}'),
onPressed: () =>
onTap(i, _label(e.label.name, e.customLabel).data!),
icon: const Icon(Icons.add_task))
Expand Down Expand Up @@ -177,6 +180,7 @@ Widget socialMedias(List<SocialMedia> websites,
])),
if (onTap != null)
IconButton(
key: Key('socialMediasCirclesMgmt${i}'),
onPressed: () =>
onTap(i, _label(e.label.name, e.customLabel).data!),
icon: const Icon(Icons.add_task))
Expand Down Expand Up @@ -219,6 +223,7 @@ Widget addressesWithForms(BuildContext context, List<Address> addresses,
])),
if (onTap != null)
IconButton(
key: Key('addressesCirclesMgmt${i}'),
onPressed: () =>
onTap(i, _label(e.label.name, e.customLabel).data!),
icon: const Icon(Icons.add_task)),
Expand Down
9 changes: 9 additions & 0 deletions lib/ui/widgets/circles/cubit.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ class CirclesCubit extends Cubit<CirclesState> {
contactsRepository.circlesWithMembership(coagContactId)));
}
});
if (!isClosed) {
emit(CirclesState(
contactsRepository.circlesWithMembership(coagContactId)));
}
}

final ContactsRepository contactsRepository;
Expand All @@ -45,6 +49,11 @@ class CirclesCubit extends Cubit<CirclesState> {
memberships[coagContactId] =
circles.where((c) => c.$3).map((c) => c.$1).asList();
await contactsRepository.updateCircleMemberships(memberships);

if (!isClosed) {
emit(CirclesState(
contactsRepository.circlesWithMembership(coagContactId)));
}
}

@override
Expand Down
44 changes: 0 additions & 44 deletions lib/ui/widgets/circles/widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,9 @@

import 'package:fast_immutable_collections/fast_immutable_collections.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:formz/formz.dart';
import 'package:uuid/uuid.dart';

import '../../../data/repositories/contacts.dart';
import 'cubit.dart';

// TODO: Display check in form with location (from gps, from map picker, from address, from coordinates) circles to share with, optional duration, optional move away to check out constraint
class CirclesForm extends StatefulWidget {
CirclesForm(
Expand Down Expand Up @@ -205,43 +201,3 @@ class CirclesFormState with FormzMixin {
@override
List<FormzInput<dynamic, dynamic>> get inputs => [];
}

class CirclesWidget extends StatelessWidget {
const CirclesWidget({required this.coagContactId, super.key});

final String coagContactId;

@override
Widget build(BuildContext context) => BlocProvider(
create: (context) =>
CirclesCubit(context.read<ContactsRepository>(), coagContactId),
child: BlocConsumer<CirclesCubit, CirclesState>(
listener: (context, state) async {},
builder: (context, state) => ElevatedButton(
onPressed: () async => showModalBottomSheet<void>(
context: context,
isScrollControlled: true,
builder: (modalContext) => Padding(
padding: EdgeInsets.only(
left: 16,
top: 16,
right: 16,
bottom:
MediaQuery.of(modalContext).viewInsets.bottom),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
CirclesForm(
circles: state.circles,
callback: context.read<CirclesCubit>().update)
],
))),
child: const Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.pin_drop),
SizedBox(width: 8),
Text('check-in')
]))));
}

0 comments on commit 43f05cc

Please sign in to comment.