Fix indexing error in conversation list search.
continuous-integration/drone/pr Build is passing Details

Only allow pinning of accepted contacts
This commit is contained in:
Sarah Jamie Lewis 2022-07-25 09:31:29 -07:00
parent d4d7a54af1
commit 34e296959a
3 changed files with 25 additions and 19 deletions

View File

@ -314,4 +314,8 @@ class ContactInfoState extends ChangeNotifier {
notifyListeners();
}
// returns true only if the conversation has been accepted, and has not been blocked
bool isAccepted() {
return _accepted && !_blocked;
}
}

View File

@ -227,11 +227,11 @@ class _ContactsViewState extends State<ContactsView> {
var contactList = ScrollablePositionedList.separated(
itemScrollController: Provider.of<ProfileInfoState>(context).contactListScrollController,
itemCount: Provider.of<ContactListState>(context).num,
itemCount: Provider.of<ContactListState>(context).numFiltered,
initialScrollIndex: initialScroll,
shrinkWrap: true,
physics: BouncingScrollPhysics(),
semanticChildCount: Provider.of<ContactListState>(context).num,
semanticChildCount: Provider.of<ContactListState>(context).numFiltered,
itemBuilder: (context, index) {
return tiles.elementAt(index);
},

View File

@ -19,7 +19,6 @@ class ContactRow extends StatefulWidget {
}
class _ContactRowState extends State<ContactRow> {
bool isHover = false;
@override
@ -127,12 +126,15 @@ class _ContactRowState extends State<ContactRow> {
),
],
))),
Visibility(visible: Platform.isAndroid || (!Platform.isAndroid && isHover) || contact.pinned, child:
IconButton(
Visibility(
// only allow pinning for non-blocked and accepted conversations,
visible: contact.isAccepted() && (Platform.isAndroid || (!Platform.isAndroid && isHover) || contact.pinned),
child: IconButton(
tooltip: contact.pinned ? AppLocalizations.of(context)!.tooltipUnpinConversation : AppLocalizations.of(context)!.tooltipPinConversation,
icon: Icon(contact.pinned ? Icons.push_pin : Icons.push_pin_outlined,
color: Provider.of<Settings>(context).theme.mainTextColor,),
icon: Icon(
contact.pinned ? Icons.push_pin : Icons.push_pin_outlined,
color: Provider.of<Settings>(context).theme.mainTextColor,
),
onPressed: () {
if (contact.pinned) {
contact.unpin(context);