Merge 1190b526ff into 8883af90f0
This commit is contained in:
commit
ece1fba8a3
7 changed files with 76 additions and 34 deletions
|
|
@ -271,44 +271,44 @@ EXTERNAL SOURCES:
|
|||
:path: ".symlinks/plugins/webview_flutter_wkwebview/darwin"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
advanced_in_app_review: fe8fd50b8670cb3dbe67e4c26ca643f7aea8dbb8
|
||||
app_links: 6d01271b3907b0ee7325c5297c75d697c4226c4d
|
||||
device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342
|
||||
Firebase: 065f2bb395062046623036d8e6dc857bc2521d56
|
||||
firebase_analytics: b5c909bdc321fab0f9ddf8712f5cef79057e09fa
|
||||
firebase_core: 8f0a8c3aca22e29012e419ee18109b4aa021f777
|
||||
firebase_crashlytics: 4b21fc111f15e814eeab83f90a71efe3c1e9399a
|
||||
firebase_performance: 0a30e8afaae656fdf6fa271ac3c62dc26b74d7a1
|
||||
FirebaseABTesting: a399ffe546392a39b19a5c2fb28bd8ea178a6f47
|
||||
FirebaseAnalytics: cd7d01d352f3c237c9a0e31552c257cd0b0c0352
|
||||
FirebaseCore: 428912f751178b06bef0a1793effeb4a5e09a9b8
|
||||
FirebaseCoreExtension: e911052d59cd0da237a45d706fc0f81654f035c1
|
||||
FirebaseCoreInternal: b321eafae5362113bc182956fafc9922cfc77b72
|
||||
FirebaseCrashlytics: 43913d587ef07beaf5db703baa61eacf9554658c
|
||||
FirebaseInstallations: 7b64ffd006032b2b019a59b803858df5112d9eaa
|
||||
FirebasePerformance: 94f614453614d8bb2a1a0177f3a1a6d2dbf4c504
|
||||
FirebaseRemoteConfig: a2f6545e41551ffb520241d38b5d3d6776c9ebe8
|
||||
FirebaseRemoteConfigInterop: 765ee19cd2bfa8e54937c8dae901eb634ad6787d
|
||||
FirebaseSessions: a2d06fd980431fda934c7a543901aca05fc4edcc
|
||||
FirebaseSharedSwift: 9d2fa84a46676302b89dbd5e6e62bce2fe376909
|
||||
advanced_in_app_review: daebe4c801525b756fe589de60fd327cb12f965c
|
||||
app_links: a754cbec3c255bd4bbb4d236ecc06f28cd9a7ce8
|
||||
device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe
|
||||
Firebase: 9a58fdbc9d8655ed7b79a19cf9690bb007d3d46d
|
||||
firebase_analytics: b5a19eaf3e4bf4187b0815ef4850b8916e2bc549
|
||||
firebase_core: ee30637e6744af8e0c12a6a1e8a9718506ec2398
|
||||
firebase_crashlytics: 28b8f39df8104131376393e6af658b8b77dd120f
|
||||
firebase_performance: 685196d0889b76a7cad9b7ea75270b9587212ee7
|
||||
FirebaseABTesting: 31266c7845f9adde0f2e8a59267e9c82e4050898
|
||||
FirebaseAnalytics: f20bbad8cb7f65d8a5eaefeb424ae8800a31bdfc
|
||||
FirebaseCore: 0dbad74bda10b8fb9ca34ad8f375fb9dd3ebef7c
|
||||
FirebaseCoreExtension: 6605938d51f765d8b18bfcafd2085276a252bee2
|
||||
FirebaseCoreInternal: fe5fa466aeb314787093a7dce9f0beeaad5a2a21
|
||||
FirebaseCrashlytics: fb31c6907e5b52aa252668394d3f1ab326df1511
|
||||
FirebaseInstallations: 6a14ab3d694ebd9f839c48d330da5547e9ca9dc0
|
||||
FirebasePerformance: c5e1275c4eca020e7ba0633b1160e24c79bd1d09
|
||||
FirebaseRemoteConfig: e9e3909162a05bc0e796326255fd43250783a2a9
|
||||
FirebaseRemoteConfigInterop: 869ddca16614f979e5c931ece11fbb0b8729ed41
|
||||
FirebaseSessions: d614ca154c63dbbc6c10d6c38259c2162c4e7c9b
|
||||
FirebaseSharedSwift: f57ed48f4542b2d7eb4738f4f23ba443f78b3780
|
||||
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
|
||||
flutter_native_splash: df59bb2e1421aa0282cb2e95618af4dcb0c56c29
|
||||
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
|
||||
flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf
|
||||
flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
|
||||
GoogleAdsOnDeviceConversion: d68c69dd9581a0f5da02617b6f377e5be483970f
|
||||
GoogleAppMeasurement: fce7c1c90640d2f9f5c56771f71deacb2ba3f98c
|
||||
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
||||
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
|
||||
in_app_review: 436034b18594851a7328d7f1c2ed5ec235b79cfc
|
||||
in_app_review: 7dd1ea365263f834b8464673f9df72c80c17c937
|
||||
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
||||
native_device_orientation: 42487b19c552fb5a6a2b51e61b93366f628113df
|
||||
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
|
||||
native_device_orientation: f3ba5f2ddbab3deee23a5f6693b4f97b02dafea2
|
||||
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
|
||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||
PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
|
||||
shared_preferences_foundation: 5086985c1d43c5ba4d5e69a4e8083a389e2909e6
|
||||
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
|
||||
url_launcher_ios: bb13df5870e8c4234ca12609d04010a21be43dfa
|
||||
wakelock_plus: 76957ab028e12bfa4e66813c99e46637f367fc7e
|
||||
webview_flutter_wkwebview: 29eb20d43355b48fe7d07113835b9128f84e3af4
|
||||
shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb
|
||||
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
|
||||
url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b
|
||||
wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556
|
||||
webview_flutter_wkwebview: 8ebf4fded22593026f7dbff1fbff31ea98573c8d
|
||||
|
||||
PODFILE CHECKSUM: 57c8aed26fba39d3ec9424816221f294a07c58eb
|
||||
|
||||
|
|
|
|||
|
|
@ -182,6 +182,19 @@ abstract class ChatStoreBase with Store {
|
|||
revealedMessageIds.add(id);
|
||||
}
|
||||
|
||||
final highlightedUsers = ObservableSet<String>();
|
||||
|
||||
@action
|
||||
void toggleHighlight(String username) {
|
||||
if (highlightedUsers.contains(username)) {
|
||||
highlightedUsers.remove(username);
|
||||
} else {
|
||||
highlightedUsers.add(username);
|
||||
}
|
||||
}
|
||||
|
||||
bool isHighlighted(String username) => highlightedUsers.contains(username);
|
||||
|
||||
/// Timer used for dismissing the notification.
|
||||
Timer? _notificationTimer;
|
||||
|
||||
|
|
|
|||
|
|
@ -312,6 +312,9 @@ class ChatMessage extends StatelessWidget {
|
|||
}
|
||||
|
||||
// If user is being mentioned in the message, highlight it red.
|
||||
if (ircMessage.mention == true) highlightColor = context.colorScheme.error;
|
||||
if (chatStore.highlightedUsers.contains(ircMessage.user)) highlightColor = context.colorScheme.primary;
|
||||
|
||||
if (ircMessage.mention == true) {
|
||||
highlightColor = context.colorScheme.error;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,6 +77,8 @@ class _ChatUserModalState extends State<ChatUserModal> {
|
|||
name: name,
|
||||
userLogin: widget.username,
|
||||
userId: widget.userId,
|
||||
isHighlighted: widget.chatStore.highlightedUsers.contains(widget.username),
|
||||
onHighlightToggle: () => widget.chatStore.toggleHighlight(widget.username),
|
||||
),
|
||||
),
|
||||
icon: Icon(Icons.adaptive.more_rounded),
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ abstract class AuthBase with Store {
|
|||
@computed
|
||||
Map<String, String> get headersTwitch => {
|
||||
'Authorization': 'Bearer $_token',
|
||||
'Client-Id': clientId,
|
||||
'Client-ID': clientId,
|
||||
};
|
||||
|
||||
/// Error flag that will be non-null and contain an error message if login failed.
|
||||
|
|
|
|||
0
lib/stores/chat_store.dart
Normal file
0
lib/stores/chat_store.dart
Normal file
|
|
@ -13,6 +13,9 @@ class UserActionsModal extends StatelessWidget {
|
|||
final String userId;
|
||||
final bool showPinOption;
|
||||
final bool? isPinned;
|
||||
// ← ADD THESE TWO
|
||||
final bool isHighlighted;
|
||||
final VoidCallback? onHighlightToggle;
|
||||
|
||||
const UserActionsModal({
|
||||
super.key,
|
||||
|
|
@ -22,6 +25,9 @@ class UserActionsModal extends StatelessWidget {
|
|||
required this.userId,
|
||||
this.showPinOption = false,
|
||||
this.isPinned,
|
||||
// ← ADD THESE TWO
|
||||
this.isHighlighted = false,
|
||||
this.onHighlightToggle,
|
||||
});
|
||||
|
||||
@override
|
||||
|
|
@ -50,6 +56,26 @@ class UserActionsModal extends StatelessWidget {
|
|||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
|
||||
// ← ADD THIS BLOCK
|
||||
if (onHighlightToggle != null)
|
||||
ListTile(
|
||||
leading: Icon(
|
||||
isHighlighted ? Icons.highlight_off : Icons.highlight,
|
||||
color: isHighlighted
|
||||
? Theme.of(context).colorScheme.error
|
||||
: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
title: Text(
|
||||
isHighlighted ? 'Remove highlight for $name' : 'Highlight $name',
|
||||
),
|
||||
onTap: () {
|
||||
onHighlightToggle!();
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
// ← END ADD
|
||||
|
||||
if (authStore.isLoggedIn)
|
||||
ListTile(
|
||||
leading: const Icon(Icons.block_rounded),
|
||||
|
|
@ -99,7 +125,6 @@ class UserActionsModal extends StatelessWidget {
|
|||
),
|
||||
body: Stack(
|
||||
children: [
|
||||
// WebView content
|
||||
Positioned.fill(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(
|
||||
|
|
@ -127,7 +152,6 @@ class UserActionsModal extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
),
|
||||
// Blurred app bar overlay
|
||||
Positioned(
|
||||
top: 0,
|
||||
left: 0,
|
||||
|
|
@ -153,4 +177,4 @@ class UserActionsModal extends StatelessWidget {
|
|||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue