mirror of
https://github.com/danbulant/dots-hyprland
synced 2026-05-25 12:52:09 +00:00
booru: small refractor
This commit is contained in:
parent
3404eacf4b
commit
dc0a15e63b
3 changed files with 35 additions and 17 deletions
|
|
@ -18,6 +18,7 @@ Item {
|
|||
id: root
|
||||
property var panelWindow
|
||||
property var inputField: tagInputField
|
||||
readonly property list<var> responses: Booru.responses
|
||||
property string previewDownloadPath: `${StandardPaths.standardLocations(StandardPaths.CacheLocation)[0]}/media/waifus`.replace("file://", "")
|
||||
property string downloadPath: (StandardPaths.standardLocations(StandardPaths.PicturesLocation)[0] + "/homework").replace("file://", "")
|
||||
property string nsfwPath: (StandardPaths.standardLocations(StandardPaths.PicturesLocation)[0] + "/homework/🌶️").replace("file://", "")
|
||||
|
|
@ -59,8 +60,8 @@ Item {
|
|||
name: "next",
|
||||
description: qsTr("Get the next page of results"),
|
||||
execute: () => {
|
||||
if (Booru.responses.length > 0) {
|
||||
const lastResponse = Booru.responses[Booru.responses.length - 1];
|
||||
if (root.responses.length > 0) {
|
||||
const lastResponse = root.responses[root.responses.length - 1];
|
||||
root.handleInput(`${lastResponse.tags.join(" ")} ${parseInt(lastResponse.page) + 1}`);
|
||||
}
|
||||
}
|
||||
|
|
@ -94,8 +95,8 @@ Item {
|
|||
}
|
||||
}
|
||||
else if (inputText.trim() == "+") {
|
||||
if (Booru.responses.length > 0) {
|
||||
const lastResponse = Booru.responses[Booru.responses.length - 1]
|
||||
if (root.responses.length > 0) {
|
||||
const lastResponse = root.responses[root.responses.length - 1]
|
||||
root.handleInput(lastResponse.tags.join(" ") + ` ${parseInt(lastResponse.page) + 1}`);
|
||||
}
|
||||
}
|
||||
|
|
@ -175,12 +176,12 @@ Item {
|
|||
spacing: 10
|
||||
model: ScriptModel {
|
||||
values: {
|
||||
if(Booru.responses.length > booruResponseListView.lastResponseLength) {
|
||||
if (booruResponseListView.lastResponseLength > 0 && Booru.responses[booruResponseListView.lastResponseLength].provider != "system")
|
||||
if(root.responses.length > booruResponseListView.lastResponseLength) {
|
||||
if (booruResponseListView.lastResponseLength > 0 && root.responses[booruResponseListView.lastResponseLength].provider != "system")
|
||||
booruResponseListView.contentY = booruResponseListView.contentY + root.scrollOnNewResponse
|
||||
booruResponseListView.lastResponseLength = Booru.responses.length
|
||||
booruResponseListView.lastResponseLength = root.responses.length
|
||||
}
|
||||
return Booru.responses
|
||||
return root.responses
|
||||
}
|
||||
}
|
||||
delegate: BooruResponse {
|
||||
|
|
@ -193,7 +194,7 @@ Item {
|
|||
}
|
||||
|
||||
Item { // Placeholder when list is empty
|
||||
opacity: Booru.responses.length === 0 ? 1 : 0
|
||||
opacity: root.responses.length === 0 ? 1 : 0
|
||||
visible: opacity > 0
|
||||
anchors.fill: parent
|
||||
|
||||
|
|
@ -558,7 +559,9 @@ Item {
|
|||
id: toolTip
|
||||
extraVisibleCondition: false
|
||||
alternativeVisibleCondition: mouseArea.containsMouse // Show tooltip when hovered
|
||||
content: qsTr("The current API used. Endpoint: ") + Booru.providers[Booru.currentProvider].url + qsTr("\nSet with /mode PROVIDER")
|
||||
// content: qsTr("The current API used. Endpoint: ") + Booru.providers[Booru.currentProvider].url + qsTr("\nSet with /mode PROVIDER")
|
||||
content: StringUtils.format(qsTr("Current API endpoint: {0}\nSet it with {1}mode PROVIDER"),
|
||||
Booru.providers[Booru.currentProvider].url, root.commandPrefix)
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ import QtQuick;
|
|||
|
||||
Singleton {
|
||||
id: root
|
||||
property Component booruResponseDataComponent: BooruResponseData {}
|
||||
|
||||
signal tagSuggestion(string query, var suggestions)
|
||||
|
||||
Connections {
|
||||
|
|
@ -19,7 +21,7 @@ Singleton {
|
|||
}
|
||||
|
||||
property string failMessage: qsTr("That didn't work. Tips:\n- Check your tags and NSFW settings\n- If you don't have a tag in mind, type a page number")
|
||||
property var responses: []
|
||||
property list<var> responses: []
|
||||
property var getWorkingImageSource: (url) => {
|
||||
if (url.includes('pximg.net')) {
|
||||
return `https://www.pixiv.net/en/artworks/${url.substring(url.lastIndexOf('/') + 1).replace(/_p\d+\.(png|jpg|jpeg|gif)$/, '')}`;
|
||||
|
|
@ -247,13 +249,13 @@ Singleton {
|
|||
}
|
||||
|
||||
function addSystemMessage(message) {
|
||||
responses = [...responses, {
|
||||
responses = [...responses, root.booruResponseDataComponent.createObject(null, {
|
||||
"provider": "system",
|
||||
"tags": [],
|
||||
"page": -1,
|
||||
"images": [],
|
||||
"message": `${message}`
|
||||
}]
|
||||
})]
|
||||
}
|
||||
|
||||
function constructRequestUrl(tags, nsfw=true, limit=20, page=1) {
|
||||
|
|
@ -315,23 +317,23 @@ Singleton {
|
|||
var response = JSON.parse(xhr.responseText)
|
||||
response = providers[currentProvider].mapFunc(response)
|
||||
// console.log("[Booru] Mapped response: " + JSON.stringify(response))
|
||||
root.responses = [...root.responses, {
|
||||
root.responses = [...root.responses, root.booruResponseDataComponent.createObject(null, {
|
||||
"provider": currentProvider,
|
||||
"tags": tags,
|
||||
"page": page,
|
||||
"images": response,
|
||||
"message": response.length > 0 ? "" : root.failMessage
|
||||
}]
|
||||
})]
|
||||
|
||||
} catch (e) {
|
||||
console.log("[Booru] Failed to parse response: " + e)
|
||||
root.responses = [...root.responses, {
|
||||
root.responses = [...root.responses, root.responseDataComponent.createObject(null, {
|
||||
"provider": currentProvider,
|
||||
"tags": tags,
|
||||
"page": page,
|
||||
"images": [],
|
||||
"message": root.failMessage
|
||||
}]
|
||||
})]
|
||||
}
|
||||
}
|
||||
else if (xhr.readyState === XMLHttpRequest.DONE) {
|
||||
|
|
|
|||
13
.config/quickshell/services/BooruResponseData.qml
Normal file
13
.config/quickshell/services/BooruResponseData.qml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import "root:/modules/common"
|
||||
import Quickshell;
|
||||
import Quickshell.Io;
|
||||
import Qt.labs.platform
|
||||
import QtQuick;
|
||||
|
||||
QtObject {
|
||||
property string provider
|
||||
property list<var> tags
|
||||
property var page
|
||||
property list<var> images
|
||||
property string message
|
||||
}
|
||||
Loading…
Reference in a new issue