feat: restore legacy modal and drag behavior

This commit is contained in:
2026-07-16 01:33:48 +09:00
parent 83398044c6
commit d7ec571343
30 changed files with 3597 additions and 321 deletions

View File

@@ -448,35 +448,44 @@ public sealed class LegacyBridgeProtocolTests
}
[Fact]
public void ParseNamedPlaylistIntents_AcceptsOnlyOpaqueIdsTitlesAndEmptyCommands()
public void ParseNamedPlaylistIntents_AcceptsOnlyOpaqueIdsTitlesAndDispatchIds()
{
Assert.True(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"refresh-named-playlists\",\"payload\":{}}",
"{\"type\":\"refresh-named-playlists\",\"payload\":{\"requestId\":\"named-ui-1\"}}",
out var refresh,
out _));
Assert.IsType<LegacyRefreshNamedPlaylistsIntent>(refresh);
Assert.Equal(
"named-ui-1",
Assert.IsType<LegacyRefreshNamedPlaylistsIntent>(refresh).RequestId);
Assert.True(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"select-named-playlist\",\"payload\":{\"definitionId\":\"named-definition-AAAAAAAAAAAB\"}}",
"{\"type\":\"select-named-playlist\",\"payload\":{\"definitionId\":\"named-definition-AAAAAAAAAAAB\",\"requestId\":\"named-ui-2\"}}",
out var selection,
out _));
Assert.Equal(
"named-definition-AAAAAAAAAAAB",
Assert.IsType<LegacySelectNamedPlaylistIntent>(selection).DefinitionId);
var selectionIntent = Assert.IsType<LegacySelectNamedPlaylistIntent>(selection);
Assert.Equal("named-definition-AAAAAAAAAAAB", selectionIntent.DefinitionId);
Assert.Equal("named-ui-2", selectionIntent.RequestId);
Assert.True(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"create-named-playlist\",\"payload\":{\"title\":\"아침 방송 A^B\"}}",
"{\"type\":\"create-named-playlist\",\"payload\":{\"title\":\"아침 방송 A^B\",\"requestId\":\"named-ui-2\"}}",
out var create,
out _));
var createIntent = Assert.IsType<LegacyCreateNamedPlaylistIntent>(create);
Assert.Equal("아침 방송 A^B", createIntent.Title);
Assert.Equal("named-ui-2", createIntent.RequestId);
Assert.True(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"delete-selected-named-playlist\",\"payload\":{\"requestId\":\"named-ui-3\"}}",
out var delete,
out _));
Assert.Equal(
"아침 방송 A^B",
Assert.IsType<LegacyCreateNamedPlaylistIntent>(create).Title);
"named-ui-3",
Assert.IsType<LegacyDeleteSelectedNamedPlaylistIntent>(delete).RequestId);
foreach (var type in new[]
{
"load-selected-named-playlist",
"save-current-named-playlist",
"delete-selected-named-playlist"
"save-current-named-playlist"
})
{
Assert.True(LegacyBridgeProtocol.TryParseIntent(
@@ -490,12 +499,24 @@ public sealed class LegacyBridgeProtocolTests
"{\"type\":\"select-named-playlist\",\"payload\":{\"definitionId\":\"named-definition-AAAAAAAAAAAB\",\"programCode\":\"00000001\"}}",
out _,
out _));
Assert.False(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"select-named-playlist\",\"payload\":{\"definitionId\":\"named-definition-AAAAAAAAAAAB\"}}",
out _,
out _));
Assert.False(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"save-current-named-playlist\",\"payload\":{\"rows\":[]}}",
out _,
out _));
Assert.False(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"create-named-playlist\",\"payload\":{\"title\":\" padded \"}}",
"{\"type\":\"create-named-playlist\",\"payload\":{\"title\":\" padded \",\"requestId\":\"named-ui-4\"}}",
out _,
out _));
Assert.False(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"refresh-named-playlists\",\"payload\":{}}",
out _,
out _));
Assert.False(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"delete-selected-named-playlist\",\"payload\":{}}",
out _,
out _));
}