1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-29 23:17:29 +08:00
Commit Graph

88 Commits

Author SHA1 Message Date
Dean Herbert
603527d72d Fix potential crash when highlighting chat messages
Test failed locally in `TestPublicChannelMention`. This test seems to
specify that the same message may arrive twice with the same ID, so
rather than overthinking this one I propose we just use `FirstOrDefault`.

```csharp
TearDown : System.AggregateException : One or more errors occurred.
(Sequence contains more than one matching element)
  ----> System.InvalidOperationException : Sequence contains more than
one matching element
--TearDown
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean
includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout,
CancellationToken cancellationToken)
   at osu.Framework.Extensions.TaskExtensions.WaitSafely(Task task)
   at osu.Framework.Testing.TestScene.checkForErrors()
--InvalidOperationException
   at System.Linq.ThrowHelper.ThrowMoreThanOneMatchException()
   at System.Linq.Enumerable.TryGetSingle[TSource](IEnumerable`1 source,
Func`2 predicate, Boolean& found)
   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1
source, Func`2 predicate)
   at
osu.Game.Overlays.Chat.DrawableChannel.<processMessageHighlighting>b__14_0()
in
/Users/dean/Projects/osu/osu.Game/Overlays/Chat/DrawableChannel.cs:line
102
   at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
```
2022-03-16 18:38:06 +09:00
Salman Ahmed
53c57661c7 Move implementtaion detail to inline comment 2022-03-11 18:34:22 +03:00
Salman Ahmed
5b70139b33 Avoid running message highlight processing more than once 2022-03-11 18:32:49 +03:00
Salman Ahmed
d07e3101ea Improve message highlight handling in DrawableChannel 2022-03-10 23:07:15 +03:00
Salman Ahmed
b25c37ce62 Instantiate highlight background container on animation
Also removes the necessity of scheduling as it actually never worked as
intended, `Scheduler` will still update even when the chat line is
masked away, and the animation will never be held anyways.

The new duration of the animation should be enough for long scrolls
either way.
2022-03-10 03:49:42 +03:00
Salman Ahmed
80c0df6af5 Scroll chat line to channel center
We may eventually want that encapsulated within `ScrollIntoView`, as it
would also come in handy for `GameplayLeaderboard`.
2022-03-10 02:50:15 +03:00
Salman Ahmed
93cf93943f Schedule chat line highlight after children to handle non-loaded lines 2022-03-10 02:48:33 +03:00
Salman Ahmed
2d8983383a Revert newMessagesArrived changes and always schedule highlight
In the case a message arrives and the chat overlay is hidden, clicking
on the mention notification will not work as the `HighlightedMessage`
bindable callback will execute before the scheduled `newMessagesArrived`
logic (which was hanging since the message arrived until the chat
overlay became open because of the notification).

Simplify things by always scheduling the `HighlightedMessage` bindable
callback.
2022-03-10 01:11:27 +03:00
Salman Ahmed
d74064b94b Use Equals instead of reference equality operator 2022-03-08 03:56:27 +03:00
Salman Ahmed
7f47be4680 Refactor message highlighting logic to rely on a Channel data bindable 2022-03-08 03:19:37 +03:00
Salman Ahmed
30b38345aa Add ability to highlight chat lines 2022-03-07 05:08:36 +03:00
Salman Ahmed
9bc1f3f014 Further refactor and simplify ChannelScrollContainer 2022-03-06 23:34:12 +03:00
Salman Ahmed
5b3ffb12b7 Refactor channel scrolling container to handle manual scrolls resiliently 2022-03-05 23:27:07 +03:00
Dean Herbert
52ca2f4797 Merge branch 'master' into chat-mention 2021-05-26 16:00:26 +09:00
Dean Herbert
699a317b44 Fix chat scroll sticking visually when scrolling beyond bottom extent 2021-03-29 18:07:47 +09:00
Dean Herbert
a76314a876 Use Update instead of UpdateAfterChildren (no need for the latter) 2021-02-02 15:57:17 +09:00
Dean Herbert
bb0753f68d Use a better method of cancelling user scroll 2021-02-02 15:44:03 +09:00
Dean Herbert
398ab9c2c2 Use UserTrackingScrollContainer instead 2021-02-02 15:29:38 +09:00
Salman Ahmed
5c28c030c8 Unconditionally set "autoscroll" state 2021-02-01 22:08:57 +03:00
Salman Ahmed
15fcabb128
Add documentation to auto-scroll leniency
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-02-01 22:04:44 +03:00
Salman Ahmed
49e62c3a4b
Apply documentation changes
Co-authored-by: Dean Herbert <pe@ppy.sh>
2021-02-01 11:02:08 +03:00
Salman Ahmed
e806e5bcd1 Improve robustness of chat auto-scrolling logic
Fix auto-scrolling state changing by old messages removal logic
2021-01-31 23:45:49 +03:00
Dean Herbert
d096f2f8f6 Fix potential cross-thread operation during chat channel load
The callbacks are scheduled to the API thread, but hooked up in BDL
load. This causes a potential case of cross-thread collection
enumeration.

I've tested and it seems like the schedule logic should be fine for
short term. Longer term, we probably want to re-think how this works so
background operations aren't performed on the `DrawableChannel` in the
first place (chat shouldn't have an overhead like this when not
visible).

Closes #11231.
2020-12-21 16:39:50 +09:00
Dean Herbert
c73d45bc01 Reduce initial channel load overhead by only loading history on active channel 2020-04-29 15:23:28 +09:00
Dean Herbert
1b6342438f Hide scrollbars in tournament chat display 2020-03-23 12:05:16 +09:00
Craftplacer
5f96940b7d Remove unused injection 2020-01-19 17:56:01 +01:00
Craftplacer
32c2023517 Remove refactor in DrawableChannel 2020-01-19 17:20:54 +01:00
Craftplacer
8a9c90c5e6 Resolve CA errors #2 2020-01-18 16:18:17 +01:00
Craftplacer
8ddd36596e Revert useless changes varying from properties, naming changes etc. 2020-01-18 15:40:55 +01:00
Craftplacer
1b53c0ff74 Remove populated property, and other changes 2020-01-16 23:15:30 +01:00
Craftplacer
0d812bce9f WIP changes for code review 2019-12-26 03:32:40 +01:00
Craftplacer
b6c31e7764 Remove ignore list, move code to MessageNotifier and add it to DI
This also adds countable private message notifications.
2019-12-17 06:59:27 +01:00
Craftplacer
1a1253a4aa Add null check to ScrollToAndHighlightMessage 2019-12-16 03:27:19 +01:00
Craftplacer
997b51b1f8 Make messageRemoved use helper method 2019-12-16 03:26:30 +01:00
Craftplacer
0225372e83 Rename method to ScrollToAndHighlightMessage 2019-12-16 03:24:07 +01:00
Craftplacer
eb3f851ce2 Split Notification class into three separate ones 2019-12-16 03:22:55 +01:00
Craftplacer
8b14090c95 Remove unused field 2019-12-16 02:13:26 +01:00
Craftplacer
20670730b9 Resolve code formatting 2019-12-16 01:57:07 +01:00
Craftplacer
15c25c571d Merge remote-tracking branch 'upstream/master' into chat-mention 2019-12-16 00:59:06 +01:00
Craftplacer
8dfc8929f1 Add chat and notification logic to DrawableChannel
with alongside multiple helper methods
2019-12-16 00:48:22 +01:00
Dean Herbert
45514ff660 Apply fixes 2019-11-25 11:30:55 +09:00
Dean Herbert
54befb6f8f Remove adjacent day separators 2019-10-29 15:45:41 +09:00
Dean Herbert
b06e70e546 Add failing test showing issue with day separator logic 2019-10-29 15:27:08 +09:00
Dean Herbert
09a6d1184a Tidy up order of scroll changes 2019-10-29 14:33:05 +09:00
Dean Herbert
d1c6e3f620 Add test for scroll to end when max history is exceeded 2019-10-29 14:32:52 +09:00
Dean Herbert
e9aa7f3218 Subclass and use yellow for stand-alone chat display 2019-10-23 00:24:19 +09:00
Dean Herbert
3b4823abe7 Use foreach 2019-10-23 00:17:37 +09:00
Dean Herbert
0ba287a7fd Rename variable 2019-10-23 00:14:22 +09:00
Andrei Zavatski
09b2f11bd5 Remove unused variable 2019-10-22 03:14:20 +03:00
Andrei Zavatski
b1eac6b400 Apply suggested changes 2019-10-22 03:11:19 +03:00