Page MenuHomePhorge

No OneTemporary

Size
5 KB
Referenced Files
None
Subscribers
None
diff --git a/src/contents/ui/JoinRoomPage.qml b/src/contents/ui/JoinRoomPage.qml
index ec7bd7b..5a1c9ca 100644
--- a/src/contents/ui/JoinRoomPage.qml
+++ b/src/contents/ui/JoinRoomPage.qml
@@ -1,75 +1,75 @@
/*
* This file is part of kazv.
* SPDX-FileCopyrightText: 2022-2024 tusooa <tusooa@kazv.moe>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import QtQuick 2.1
import org.kde.kirigami 2.4 as Kirigami
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.1
import '.' as Kazv
-Kirigami.Page {
+Kazv.ClosableScrollablePage {
id: joinRoomPage
title: l10n.get('join-room-page-title')
ButtonGroup {
id: visibilityButtons
}
ColumnLayout {
width: parent.width
spacing: Kirigami.Units.largeSpacing
GridLayout {
columns: 2
Label {
text: l10n.get('join-room-page-id-or-alias-prompt')
}
TextField {
id: idOrAlias
objectName: 'idOrAliasInput'
placeholderText: l10n.get('join-room-page-id-or-alias-placeholder')
Layout.fillWidth: true
}
Label {
text: l10n.get('join-room-page-servers-prompt')
}
TextArea {
id: servers
objectName: 'serversInput'
placeholderText: l10n.get('join-room-page-servers-placeholder')
Layout.fillWidth: true
}
}
Button {
objectName: 'joinRoomButton'
text: l10n.get('join-room-page-action-join-room')
onClicked: joinRoomPage.joinRoom()
}
}
property var joinRoomHandler: Kazv.AsyncHandler {
property var serverNames: servers.text.split('\n').map(k => k.trim()).filter(k => k)
property var room: idOrAlias.text
trigger: () => matrixSdk.joinRoom(room, serverNames)
onResolved: {
if (success) {
showPassiveNotification(l10n.get('join-room-page-success-prompt', { room }));
pageStack.removePage(joinRoomPage);
} else {
showPassiveNotification(l10n.get('join-room-page-failed-prompt', { room, errorCode: data.errorCode, errorMsg: data.error }));
}
}
}
function joinRoom()
{
joinRoomHandler.call();
}
}
diff --git a/src/tests/quick-tests/tst_JoinRoomPage.qml b/src/tests/quick-tests/tst_JoinRoomPage.qml
index 8dc79b9..61f1a00 100644
--- a/src/tests/quick-tests/tst_JoinRoomPage.qml
+++ b/src/tests/quick-tests/tst_JoinRoomPage.qml
@@ -1,93 +1,99 @@
/*
* This file is part of kazv.
* SPDX-FileCopyrightText: 2024 tusooa <tusooa@kazv.moe>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import QtQuick 2.15
import QtQuick.Layouts 1.15
import QtTest 1.0
import '../../contents/ui' as Kazv
import 'test-helpers.js' as Helpers
import 'test-helpers' as TestHelpers
import moe.kazv.mxc.kazv 0.0 as MK
Item {
id: item
width: 800
height: 600
property var mockHelper: TestHelpers.MockHelper {}
property var l10n: Helpers.fluentMock
property var showPassiveNotification: () => {}
property var matrixSdk: TestHelpers.MatrixSdkMock {
property var joinRoom: mockHelper.promise()
}
property var sdkVars: ({})
property var pageStack: ({
removePage: mockHelper.noop(),
})
Kazv.JoinRoomPage {
id: joinRoomPage
}
TestCase {
id: joinRoomPageTest
name: 'JoinRoomPageTest'
when: windowShown
+ function initTestCase() {
+ if (MK.KazvUtil.kfQtMajorVersion === 6) {
+ joinRoomPage.contentItem.clip = false;
+ }
+ }
+
function cleanup() {
mockHelper.clearAll();
}
function test_joinRoomWithServers() {
findChild(joinRoomPage, 'idOrAliasInput').text = '#foo:example.com';
findChild(joinRoomPage, 'serversInput').text = 'example.com\nexample.org';
const button = findChild(joinRoomPage, 'joinRoomButton');
verify(button.enabled);
mouseClick(button);
tryVerify(() => item.matrixSdk.joinRoom.calledTimes() === 1, 1000);
verify(Helpers.deepEqual(item.matrixSdk.joinRoom.lastArgs(), [
'#foo:example.com',
['example.com', 'example.org'],
]));
item.matrixSdk.joinRoom.lastRetVal().resolve(true, {});
tryVerify(() => item.pageStack.removePage.calledTimes() === 1);
}
function test_joinRoomWithoutServers() {
findChild(joinRoomPage, 'idOrAliasInput').text = '#foo:example.com';
findChild(joinRoomPage, 'serversInput').text = '';
const button = findChild(joinRoomPage, 'joinRoomButton');
verify(button.enabled);
mouseClick(button);
tryVerify(() => item.matrixSdk.joinRoom.calledTimes() === 1, 1000);
verify(Helpers.deepEqual(item.matrixSdk.joinRoom.lastArgs(), [
'#foo:example.com',
[],
]));
item.matrixSdk.joinRoom.lastRetVal().resolve(true, {});
tryVerify(() => item.pageStack.removePage.calledTimes() === 1);
}
function test_joinRoomFailure() {
findChild(joinRoomPage, 'idOrAliasInput').text = '#foo:example.com';
findChild(joinRoomPage, 'serversInput').text = '';
const button = findChild(joinRoomPage, 'joinRoomButton');
verify(button.enabled);
mouseClick(button);
tryVerify(() => item.matrixSdk.joinRoom.calledTimes() === 1, 1000);
item.matrixSdk.joinRoom.lastRetVal().resolve(false, {});
tryVerify(() => item.pageStack.removePage.calledTimes() === 0);
}
}
}

File Metadata

Mime Type
text/x-diff
Expires
Sat, Oct 10, 8:39 PM (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1785445
Default Alt Text
(5 KB)

Event Timeline