mirror of
https://github.com/osukey/osukey.git
synced 2025-05-11 16:47:19 +09:00
Stop TestCaseChatDisplay basically reimplementing ChatOverlay.
This commit is contained in:
parent
0da0ef5a1b
commit
2a099bb56c
@ -17,6 +17,7 @@ using osu.Game.Online.Chat;
|
|||||||
using OpenTK;
|
using OpenTK;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Online.Chat.Drawables;
|
using osu.Game.Online.Chat.Drawables;
|
||||||
|
using osu.Game.Overlays;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
{
|
{
|
||||||
@ -25,119 +26,16 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
private ScheduledDelegate messageRequest;
|
private ScheduledDelegate messageRequest;
|
||||||
|
|
||||||
public override string Name => @"Chat";
|
public override string Name => @"Chat";
|
||||||
public override string Description => @"Testing API polling";
|
public override string Description => @"Testing chat api and overlay";
|
||||||
|
|
||||||
FlowContainer flow;
|
|
||||||
|
|
||||||
private Scheduler scheduler = new Scheduler();
|
|
||||||
|
|
||||||
private APIAccess api;
|
|
||||||
|
|
||||||
private ChannelDisplay channelDisplay;
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load(APIAccess api)
|
|
||||||
{
|
|
||||||
this.api = api;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Reset()
|
public override void Reset()
|
||||||
{
|
{
|
||||||
base.Reset();
|
base.Reset();
|
||||||
|
|
||||||
if (api.State != APIState.Online)
|
Add(new ChatOverlay()
|
||||||
api.OnStateChange += delegate { initializeChannels(); };
|
|
||||||
else
|
|
||||||
initializeChannels();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void Update()
|
|
||||||
{
|
|
||||||
scheduler.Update();
|
|
||||||
base.Update();
|
|
||||||
}
|
|
||||||
|
|
||||||
private long? lastMessageId;
|
|
||||||
|
|
||||||
List<Channel> careChannels;
|
|
||||||
|
|
||||||
private void initializeChannels()
|
|
||||||
{
|
|
||||||
careChannels = new List<Channel>();
|
|
||||||
|
|
||||||
if (api.State != APIState.Online)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Add(flow = new FlowContainer
|
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
State = Visibility.Visible
|
||||||
Direction = FlowDirections.Vertical
|
|
||||||
});
|
});
|
||||||
|
|
||||||
SpriteText loading;
|
|
||||||
Add(loading = new SpriteText
|
|
||||||
{
|
|
||||||
Text = @"Loading available channels...",
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
TextSize = 40,
|
|
||||||
});
|
|
||||||
|
|
||||||
messageRequest?.Cancel();
|
|
||||||
|
|
||||||
ListChannelsRequest req = new ListChannelsRequest();
|
|
||||||
req.Success += delegate (List<Channel> channels)
|
|
||||||
{
|
|
||||||
Scheduler.Add(delegate
|
|
||||||
{
|
|
||||||
loading.FadeOut(100);
|
|
||||||
});
|
|
||||||
|
|
||||||
addChannel(channels.Find(c => c.Name == @"#osu"));
|
|
||||||
addChannel(channels.Find(c => c.Name == @"#lobby"));
|
|
||||||
addChannel(channels.Find(c => c.Name == @"#english"));
|
|
||||||
|
|
||||||
messageRequest = scheduler.AddDelayed(() => FetchNewMessages(api), 1000, true);
|
|
||||||
};
|
|
||||||
api.Queue(req);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addChannel(Channel channel)
|
|
||||||
{
|
|
||||||
flow.Add(channelDisplay = new ChannelDisplay(channel)
|
|
||||||
{
|
|
||||||
Size = new Vector2(1, 0.3f)
|
|
||||||
});
|
|
||||||
|
|
||||||
careChannels.Add(channel);
|
|
||||||
}
|
|
||||||
|
|
||||||
GetMessagesRequest fetchReq;
|
|
||||||
|
|
||||||
public void FetchNewMessages(APIAccess api)
|
|
||||||
{
|
|
||||||
if (fetchReq != null) return;
|
|
||||||
|
|
||||||
fetchReq = new GetMessagesRequest(careChannels, lastMessageId);
|
|
||||||
fetchReq.Success += delegate (List<Message> messages)
|
|
||||||
{
|
|
||||||
foreach (Message m in messages)
|
|
||||||
{
|
|
||||||
careChannels.Find(c => c.Id == m.ChannelId).AddNewMessages(m);
|
|
||||||
}
|
|
||||||
|
|
||||||
lastMessageId = messages.LastOrDefault()?.Id ?? lastMessageId;
|
|
||||||
|
|
||||||
Debug.Write("success!");
|
|
||||||
fetchReq = null;
|
|
||||||
};
|
|
||||||
fetchReq.Failure += delegate
|
|
||||||
{
|
|
||||||
Debug.Write("failure!");
|
|
||||||
fetchReq = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
api.Queue(fetchReq);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user