1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2024-11-22 01:05:17 +00:00

Sailfish: Fix freeze when connecting via HTTPS

This commit is contained in:
Chris Josten 2022-04-26 19:53:12 +02:00
parent deada4f635
commit cab5f20469
No known key found for this signature in database
GPG key ID: A69C050E9FD9FF6A
7 changed files with 47 additions and 24 deletions

View file

@ -4,7 +4,6 @@ set (CMAKE_CXX_STANDARD 17)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC ON)
cmake_policy(SET CMP0048 NEW) cmake_policy(SET CMP0048 NEW)
set(CMAKE_CXX_STANDARD 17)
# Options # Options
option(PLATFORM_SAILFISHOS "Build SailfishOS version of application" OFF) option(PLATFORM_SAILFISHOS "Build SailfishOS version of application" OFF)

View file

@ -45,6 +45,7 @@ set(sailfin_QML_SOURCES
qml/pages/MainPage.qml qml/pages/MainPage.qml
qml/pages/AboutPage.qml qml/pages/AboutPage.qml
qml/harbour-sailfin.qml qml/harbour-sailfin.qml
qml/pages/ConnectingPage.qml
qml/pages/SettingsPage.qml qml/pages/SettingsPage.qml
qml/pages/VideoPage.qml qml/pages/VideoPage.qml
qml/pages/itemdetails/BaseDetailPage.qml qml/pages/itemdetails/BaseDetailPage.qml
@ -110,6 +111,4 @@ install(FILES icons/172x172/harbour-sailfin.png
# Search the Qt Creator Manual to learn about the QtCreatorDeployment.txt file # Search the Qt Creator Manual to learn about the QtCreatorDeployment.txt file
# format. # format.
file(WRITE "${CMAKE_BINARY_DIR}/QtCreatorDeployment.txt" file(WRITE "${CMAKE_BINARY_DIR}/QtCreatorDeployment.txt"
"${CMAKE_INSTALL_PREFIX} "${CMAKE_INSTALL_PREFIX}\n${CMAKE_BINARY_DIR}/sailfish/harbour-sailfin:bin")
${CMAKE_BINARY_DIR}/sailfish/harbour-sailfin:bin
")

View file

@ -4,8 +4,6 @@ Version=1.1
X-Nemo-Application-Type=silica-qt5 X-Nemo-Application-Type=silica-qt5
Icon=harbour-sailfin Icon=harbour-sailfin
Exec=harbour-sailfin Exec=harbour-sailfin
#Exec=/usr/bin/sailjail -p harbour-sailfin.desktop /usr/bin/harbour-sailfin
Name=Sailfin Name=Sailfin
# translation example: # translation example:
# your app name in German locale (de) # your app name in German locale (de)

View file

@ -68,7 +68,7 @@ PanelBackground {
} }
width: height width: height
Binding on blurhash { Binding on blurhash {
when: manager.item !== null && "Primary" in manager.item.imageBlurHashes when: manager.item !== null && "Primary" in manager.item.imageBlurHashes && "Primary" in manager.item.imageTags
value: manager.item.imageBlurHashes["Primary"][manager.item.imageTags["Primary"]] value: manager.item.imageBlurHashes["Primary"][manager.item.imageTags["Primary"]]
} }
source: largeAlbumArt.source source: largeAlbumArt.source

View file

@ -62,21 +62,15 @@ ApplicationWindow {
onRaiseRequested: appWindow.raise() onRaiseRequested: appWindow.raise()
} }
initialPage: Component { initialPage: ConnectingPage {
MainPage { id: connectingPage
Connections {
target: apiClient
// Replace the MainPage if no server was set up.
}
onStatusChanged: { onStatusChanged: {
if (status == PageStatus.Active && !_hasInitialized) { if (connectingPage.status == PageStatus.Active && !_hasInitialized) {
_hasInitialized = true; _hasInitialized = true;
apiClient.restoreSavedSession(); apiClient.restoreSavedSession();
} }
} }
} }
}
//cover: CoverBackground {CoverPlaceholder { icon.source: "icon.png"; text: "Sailfin"}} //cover: CoverBackground {CoverPlaceholder { icon.source: "icon.png"; text: "Sailfin"}}
cover: { cover: {
// Disabled due to buggy Loader behaviour // Disabled due to buggy Loader behaviour
@ -171,11 +165,36 @@ ApplicationWindow {
onConnectionFailed: errorNotification.show("Connect error: " + error) onConnectionFailed: errorNotification.show("Connect error: " + error)
//onConnectionSuccess: errorNotification.show("Success: " + loginMessage) //onConnectionSuccess: errorNotification.show("Success: " + loginMessage)
onSetupRequired: { onSetupRequired: {
var isInSetup = pageStack.find(function (page) { return typeof page._isSetupPage !== "undefined" }) !== null console.log("Is in setup: " + isInSetup())
console.log("Is in setup: " + isInSetup) if (!isInSetup()) {
if (!isInSetup) {
pageStack.replace(Qt.resolvedUrl("pages/setup/AddServerPage.qml"), {"backNavigation": false}); pageStack.replace(Qt.resolvedUrl("pages/setup/AddServerPage.qml"), {"backNavigation": false});
} }
} }
onAuthenticatedChanged: {
if (authenticated && !isInSetup()) {
console.log("Authenticated)")
loginAnimation.start()
//pageStack.replace(Qt.resolvedUrl("pages/MainPage.qml"))
}
}
}
// Delaying the creation of the MainPage prevents the application from freezing
// if connecting to the server over HTTPS
// TODO: figure out why the application actually freezes and remove this workaround
SequentialAnimation {
id: loginAnimation
PauseAnimation {
duration: 250
}
ScriptAction {
script: pageStack.replace(Qt.resolvedUrl("pages/MainPage.qml"), {}, PageStackAction.Immediate)
}
}
function isInSetup() {
return pageStack.find(function (page) { return typeof page._isSetupPage !== "undefined" }) !== null
} }
} }

View file

@ -0,0 +1,8 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
Page {
PageBusyIndicator {
running: true
}
}

View file

@ -222,7 +222,7 @@ Page {
delegate: LibraryItemDelegate { delegate: LibraryItemDelegate {
property string id: model.jellyfinId property string id: model.jellyfinId
title: model.name title: model.name
poster: Utils.itemModelImageUrl(appWindow.apiClient.baseUrl, model.jellyfinId, model.imageTags["Primary"], "Primary", {"maxHeight": height}) poster: Utils.itemModelImageUrl(appWindow.apiClient.baseUrl, model.jellyfinId, model.imageTags["Primary"], "Primary", {"height": height})
Binding on blurhash { Binding on blurhash {
when: poster !== "" when: poster !== ""
value: model.imageBlurHashes["Primary"][model.imageTags["Primary"]] value: model.imageBlurHashes["Primary"][model.imageTags["Primary"]]