Commit Graph

154 Commits

Author SHA1 Message Date
bfb939cbd0 Expand on why call needs to be made every 10 minutes 2022-11-12 22:24:27 +09:00
ace4099079 Update ack code after incorrect merge 2022-11-12 21:41:10 +09:00
dde09d409b Merge branch 'master' into chat-silences 2022-11-12 21:00:56 +09:00
67e99b5344 Lookup channels before calling HandleJoinedChannel() 2022-11-07 14:34:55 +09:00
f931bdc5ff Fix channel lookup not considering missing ids 2022-11-07 12:25:23 +09:00
cf03001c83 Better handling for joining channels with only ID 2022-11-07 11:52:07 +09:00
e3adf5a985 Handle channel parts 2022-11-07 11:36:55 +09:00
f12ada9d92 Fix chat connecting too early 2022-11-04 19:36:24 +09:00
1d2818dc70 Reschedule ack request on completion 2022-11-04 19:02:26 +09:00
fa18b5f701 Construct notifications client inside ChannelManager 2022-11-04 18:51:00 +09:00
72745656e7 Remove StartChat()/chat enablement 2022-11-04 18:48:34 +09:00
58396d49dc Fix handling of local echo deduplication 2022-11-04 18:44:22 +09:00
063a8bdf9e Remove messages from silenced users 2022-11-02 17:13:14 +09:00
ab78cde2d4 Fix crossthread mutations 2022-10-28 18:37:43 +09:00
169bcc2654 Use polling connector in tests 2022-10-28 18:08:08 +09:00
2f731f86ba Adjust ChannelManager to use notifications client 2022-10-28 16:28:58 +09:00
c1075d113f Add logging around current channel changes and join requests
Tracking down a flaky test
(https://teamcity.ppy.sh/buildConfiguration/Osu_Build/553?hideProblemsFromDependencies=false&expandBuildTestsSection=true&hideTestsFromDependencies=false):

```csharp
TearDown : System.TimeoutException : "PM Channel 1 displayed" timed out
--TearDown
   at osu.Framework.Testing.Drawables.Steps.UntilStepButton.<>c__DisplayClass11_0.<.ctor>b__0()
   at osu.Framework.Testing.Drawables.Steps.StepButton.PerformStep(Boolean userTriggered)
   at osu.Framework.Testing.TestScene.runNextStep(Action onCompletion, Action`1 onError, Func`2 stopCondition)
--- End of stack trace from previous location ---
   at osu.Framework.Testing.TestSceneTestRunner.TestRunner.RunTestBlocking(TestScene test)
   at osu.Game.Tests.Visual.OsuTestScene.OsuTestSceneTestRunner.RunTestBlocking(TestScene test) in /opt/buildagent/work/ecd860037212ac52/osu.Game/Tests/Visual/OsuTestScene.cs:line 503
   at osu.Framework.Testing.TestScene.RunTestsFromNUnit()
------- Stdout: -------
[runtime] 2022-06-27 23:18:55 [verbose]: 💨 Class: TestSceneChatOverlay
[runtime] 2022-06-27 23:18:55 [verbose]: 🔶 Test:  TestKeyboardNextChannel
[runtime] 2022-06-27 23:18:55 [verbose]: Chat is now polling every 60000 ms
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #1 Setup request handler
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #2 Add test channels
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #3 Show overlay with channels
[runtime] 2022-06-27 23:18:55 [verbose]: Unhandled Request Type: osu.Game.Online.API.Requests.CreateChannelRequest
[network] 2022-06-27 23:18:55 [verbose]: Failing request osu.Game.Online.API.Requests.CreateChannelRequest (System.InvalidOperationException: DummyAPIAccess cannot process this request.)
[runtime] 2022-06-27 23:18:55 [verbose]: Unhandled Request Type: osu.Game.Online.API.Requests.CreateChannelRequest
[network] 2022-06-27 23:18:55 [verbose]: Failing request osu.Game.Online.API.Requests.CreateChannelRequest (System.InvalidOperationException: DummyAPIAccess cannot process this request.)
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #4 Select channel 1
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #5 Channel 1 is visible
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #6 Press document next keys
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #7 Channel 2 is visible
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #8 Press document next keys
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #9 PM Channel 1 displayed
[network] 2022-06-27 23:18:55 [verbose]: Request to https://a.ppy.sh/587 failed with System.Net.WebException: NotFound.
[network] 2022-06-27 23:18:55 [verbose]: Request to https://a.ppy.sh/503 failed with System.Net.WebException: NotFound.
[runtime] 2022-06-27 23:19:05 [verbose]: 💥 Failed (on attempt 5,550)
[runtime] 2022-06-27 23:19:05 [verbose]:  Currently loading components (0)
[runtime] 2022-06-27 23:19:05 [verbose]: 🧵 Task schedulers
[runtime] 2022-06-27 23:19:05 [verbose]: LoadComponentsAsync (standard) concurrency:4 running:0 pending:0
[runtime] 2022-06-27 23:19:05 [verbose]: LoadComponentsAsync (long load) concurrency:4 running:0 pending:0
[runtime] 2022-06-27 23:19:05 [verbose]: 🎱 Thread pool
[runtime] 2022-06-27 23:19:05 [verbose]: worker:          min 1      max 32,767 available 32,766
[runtime] 2022-06-27 23:19:05 [verbose]: completion:      min 1      max 1,000  available 1,000
[runtime] 2022-06-27 23:19:05 [debug]: Focus on "ChatTextBox" no longer valid as a result of unfocusIfNoLongerValid.
[runtime] 2022-06-27 23:19:05 [debug]: Focus changed from ChatTextBox to nothing.
```

This kind of logging should be helpful:

```csharp
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #5 Channel 1 is visible
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #6 Press document next keys
[runtime] 2022-06-28 04:59:57 [verbose]: Current channel changed to #channel-2
[runtime] 2022-06-28 04:59:57 [debug]: Pressed (DocumentNext) handled by TestSceneChatOverlay+TestChatOverlay.
[runtime] 2022-06-28 04:59:57 [debug]: KeyDownEvent(PageDown, False) handled by ManualInputManager+LocalPlatformActionContainer.
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #7 Channel 2 is visible
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #8 Press document next keys
[runtime] 2022-06-28 04:59:57 [verbose]: Current channel changed to test user 685
[runtime] 2022-06-28 04:59:57 [debug]: Pressed (DocumentNext) handled by TestSceneChatOverlay+TestChatOverlay.
[runtime] 2022-06-28 04:59:57 [debug]: KeyDownEvent(PageDown, False) handled by ManualInputManager+LocalPlatformActionContainer.
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #9 PM Channel 1 displayed
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #10 Press document next keys
[runtime] 2022-06-28 04:59:57 [verbose]: Current channel changed to test user 218
```
2022-06-28 14:00:30 +09:00
31a447fda0 Update parameter discards 2022-06-24 21:26:19 +09:00
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
c661f2b059 Ensure ChannelManager has access to API from point of construction
Closes https://github.com/ppy/osu/issues/18451.
2022-06-08 19:15:23 +09:00
8f596520f3 Remove old chat overlay components 2022-05-29 20:08:43 +01:00
136ecb45e2 Rename dummy channel and move to a nested class inside the ChannelListing itself 2022-05-19 19:26:14 +09:00
dd4b11c593 Re-add exception handling on PM message request failure 2022-05-18 01:47:23 +01:00
ae5b6c3e10 Use dummy channel to show selector and remove ChannelListSelector
Add dummy channel `DummySelectorChannel` which should be set as the
current channel in the channel manager when the selector in the chat
overlay should be shown.

Refactors the `ChannelListItem` to not show mention pill and close
button when the channel is the dummy selector channel.

Ensure that the `ChannelList` selects the dummy channel on clicking the
selector item.

Removes `ChannelListSelector` as it is no longer needed.

Removes the `setCurrent` parameter from `ChannelManager.JoinChannel`
method as it is no longer needed.
2022-05-15 20:24:49 +01:00
cced8609f6 Add setCurrent param to ChannelManager.JoinChannel 2022-05-11 22:51:15 +01:00
b4a54b38e7 Remove redundant parameter specification 2022-02-24 16:02:16 +09:00
3f6bdc5585 Don't expose "mark as read" errors to the user via notifications
This can happen if the user leaves the channel before the request is
fired. You can't mark a channel as read when you're not in the channel.

Addresses https://github.com/ppy/osu/discussions/16973.
2022-02-24 15:40:07 +09:00
4012ef7e7b Reduce polling rate when idle even if HighPollRate is requested 2022-01-13 17:33:55 +09:00
46d2f305b5 Log chat polling rate changes 2022-01-13 17:31:59 +09:00
00177a3ae1 Update usages to new naming 2022-01-06 22:54:43 +09:00
3ea7588a91 Update continuation usages to use GetCompletedResult 2022-01-06 22:53:07 +09:00
73b40e6833 Replace usage of .Result with .WaitSafelyForResult 2022-01-04 11:51:41 +09:00
e7d7587ea5 Merge branch 'master' into reduce-chat-overhead 2022-01-01 15:02:55 +01:00
1262e76a58 Fix test failure due to missing DI cached IdleTracker 2021-12-31 23:18:03 +09:00
98524d60a4 Fix clear identifier typos 2021-12-27 20:26:28 -08:00
7c25ce81e1 Further reduce chat poll rate when idle or not visible 2021-12-26 16:26:47 +09:00
0ecf5f201c Rename User to APIUser and move to correct namespace 2021-11-07 11:26:01 +09:00
6944151486 Apply batch fixing of built-in types using var 2021-10-27 13:04:41 +09:00
c4627bed6d Print username in case of generic network failure too 2021-09-12 12:56:36 +02:00
e511c2ef2b add comment 2021-09-12 08:50:53 +01:00
c166f1a06a change error message based on exception message 2021-09-11 14:18:09 +01:00
acb181ff2b rename alreadyJoinedChannel -> privateChannel 2021-09-10 08:15:43 +01:00
5ec615c783 display user in error message
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2021-09-10 08:02:15 +01:00
84c152e7b6 break when already found user
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2021-09-10 08:01:38 +01:00
255f8a9769 add alias "/msg" (also a command in stable) 2021-09-07 17:25:47 +01:00
b1c89f7618 ignore case when search for already joined channel 2021-09-07 17:22:59 +01:00
f54d5675db check if user joined requested channel already 2021-09-07 17:06:12 +01:00
5c385e84ea wrong command name in query message 2021-09-05 21:20:19 +01:00
cb6cee9aea add /query as alias of /chat 2021-09-05 21:10:08 +01:00
59ca69e41f add /chat command 2021-09-05 18:16:57 +01:00