Skip to content

Commit 5d50155

Browse files
authored
✨ Use rich text rendering instead of Chrome for HTML clipboard rendering (#3193)
1 parent d585ca5 commit 5d50155

File tree

28 files changed

+785
-1019
lines changed

28 files changed

+785
-1019
lines changed

.github/scripts/updateKnownGoodVersionsWithDownloads.js

Lines changed: 0 additions & 87 deletions
This file was deleted.

.github/workflows/build-release.yml

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -106,19 +106,6 @@ jobs:
106106
- name: Install dependencies
107107
run: npm install semver fs-extra axios
108108

109-
- name: Update known-good-versions-with-downloads.json
110-
run: node .github/scripts/updateKnownGoodVersionsWithDownloads.js
111-
112-
- name: Upload known-good-versions-with-downloads.json
113-
id: upload_known_good_versions_with_downloads_json
114-
uses: CrossPaste/oss-upload-action@main
115-
with:
116-
key-id: ${{ secrets.ALIYUN_ACCESSKEY_ID }}
117-
key-secret: ${{ secrets.ALIYUN_ACCESSKEY_SECRET }}
118-
region: oss-cn-shenzhen
119-
bucket: crosspaste-desktop
120-
assets: known-good-versions-with-downloads.json:known-good-versions-with-downloads.json
121-
122109
- name: Validate and update version
123110
run: node .github/scripts/validateAndUpdateVersion.js
124111

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ kotlin {
115115
implementation(libs.lifecycle.viewmodel.compose)
116116
implementation(libs.material.desktop)
117117
implementation(libs.okio)
118+
implementation(libs.richeditor)
118119
implementation(libs.semver)
119120
implementation(libs.sqldelight.coroutines.extensions)
120121
}
@@ -141,8 +142,7 @@ kotlin {
141142
implementation(libs.jnativehook)
142143
implementation(libs.ktor.server.netty)
143144
implementation(libs.logback.classic)
144-
implementation(libs.selenium.chrome.driver)
145-
implementation(libs.selenium.devtools)
145+
implementation(libs.ph.css)
146146
implementation(libs.sqlite.driver)
147147
implementation(libs.system.tray)
148148
implementation("com.github.Dansoftowner:jSystemThemeDetector:3.9.1") {

app/src/commonMain/kotlin/com/crosspaste/db/paste/PasteDao.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -490,9 +490,7 @@ class PasteDao(
490490
}
491491

492492
private fun addRenderingTask(id: Long, pasteType: PasteType, addTask: (Long) -> Unit) {
493-
if (pasteType.isHtml()) {
494-
addTask(taskDao.createTask(id, TaskType.HTML_TO_IMAGE_TASK))
495-
} else if (pasteType.isRtf()) {
493+
if (pasteType.isRtf()) {
496494
addTask(taskDao.createTask(id, TaskType.RTF_TO_IMAGE_TASK))
497495
} else if (pasteType.isUrl()) {
498496
addTask(taskDao.createTask(id, TaskType.OPEN_GRAPH_TASK))

app/src/commonMain/kotlin/com/crosspaste/db/task/TaskType.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ object TaskType {
77
const val DELETE_PASTE_TASK = 1
88
const val PULL_FILE_TASK = 2
99
const val CLEAN_PASTE_TASK = 3
10+
@Deprecated("not used anymore")
1011
const val HTML_TO_IMAGE_TASK = 4
1112
const val PULL_ICON_TASK = 5
1213
const val RTF_TO_IMAGE_TASK = 6

app/src/commonMain/kotlin/com/crosspaste/task/Html2ImageTaskExecutor.kt

Lines changed: 0 additions & 60 deletions
This file was deleted.

app/src/desktopMain/kotlin/com/crosspaste/CrossPaste.kt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,6 @@ class CrossPaste {
131131
ioCoroutineDispatcher.launch {
132132
val jobs =
133133
listOf(
134-
async(ioDispatcher) {
135-
koin.get<RenderingService<String>>(named("htmlRendering")).start()
136-
},
137134
async(ioDispatcher) {
138135
koin.get<RenderingService<String>>(named("rtfRendering")).start()
139136
},
@@ -186,12 +183,6 @@ class CrossPaste {
186183
async {
187184
stopService<TaskExecutor>("TaskExecutor") { it.shutdown() }
188185
},
189-
async {
190-
stopService<RenderingService<String>>(
191-
qualifier = named("htmlRendering"),
192-
serviceName = "RenderingService",
193-
) { it.stop() }
194-
},
195186
async {
196187
stopService<RenderingService<String>>(
197188
qualifier = named("rtfRendering"),

app/src/desktopMain/kotlin/com/crosspaste/DesktopModule.kt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ import com.crosspaste.platform.Platform
157157
import com.crosspaste.presist.FilePersist
158158
import com.crosspaste.recommend.DesktopRecommendationService
159159
import com.crosspaste.recommend.RecommendationService
160-
import com.crosspaste.rendering.DesktopHtmlRenderingService
161160
import com.crosspaste.rendering.DesktopRenderingHelper
162161
import com.crosspaste.rendering.DesktopRtfRenderingService
163162
import com.crosspaste.rendering.OpenGraphService
@@ -182,7 +181,6 @@ import com.crosspaste.sync.TokenCache
182181
import com.crosspaste.task.CleanPasteTaskExecutor
183182
import com.crosspaste.task.CleanTaskTaskExecutor
184183
import com.crosspaste.task.DeletePasteTaskExecutor
185-
import com.crosspaste.task.Html2ImageTaskExecutor
186184
import com.crosspaste.task.OpenGraphTaskExecutor
187185
import com.crosspaste.task.PullFileTaskExecutor
188186
import com.crosspaste.task.PullIconTaskExecutor
@@ -433,9 +431,6 @@ class DesktopModule(
433431
single<CleanScheduler> { CleanScheduler(get(), get(), get()) }
434432
single<CurrentPaste> { DesktopCurrentPaste(lazy { get() }) }
435433
single<RenderingHelper> { DesktopRenderingHelper(get()) }
436-
single<RenderingService<String>>(named("htmlRendering")) {
437-
DesktopHtmlRenderingService(get(), get(), get(), get(), get(), get(), get(), get(), get())
438-
}
439434
single<RenderingService<String>>(named("rtfRendering")) {
440435
DesktopRtfRenderingService(get(), get(), get(), get())
441436
}
@@ -460,10 +455,6 @@ class DesktopModule(
460455
CleanPasteTaskExecutor(get(), get()),
461456
CleanTaskTaskExecutor(get()),
462457
DeletePasteTaskExecutor(get()),
463-
Html2ImageTaskExecutor(
464-
lazy { get<RenderingService<String>>(named("htmlRendering")) },
465-
get(),
466-
),
467458
OpenGraphTaskExecutor(
468459
lazy { get<RenderingService<String>>(named("urlRendering")) },
469460
get(),

app/src/desktopMain/kotlin/com/crosspaste/paste/plugin/type/DesktopHtmlTypePlugin.kt

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
package com.crosspaste.paste.plugin.type
22

3+
import androidx.compose.ui.graphics.Color
4+
import androidx.compose.ui.graphics.toArgb
35
import com.crosspaste.paste.PasteCollector
46
import com.crosspaste.paste.PasteDataFlavor
57
import com.crosspaste.paste.PasteTransferable
68
import com.crosspaste.paste.PasteType
79
import com.crosspaste.paste.item.HtmlPasteItem
810
import com.crosspaste.paste.item.PasteItem
11+
import com.crosspaste.paste.item.PasteItem.Companion.updateExtraInfo
12+
import com.crosspaste.paste.item.PasteItemProperties.BACKGROUND
913
import com.crosspaste.paste.toPasteDataFlavor
1014
import com.crosspaste.platform.Platform
1115
import com.crosspaste.platform.windows.html.HTMLCodec
1216
import com.crosspaste.plugin.office.OfficeHtmlPlugin
17+
import com.crosspaste.utils.HtmlColorUtils
1318
import com.crosspaste.utils.getCodecsUtils
1419
import com.crosspaste.utils.getHtmlUtils
20+
import kotlinx.serialization.json.put
1521
import java.awt.datatransfer.DataFlavor
1622

1723
class DesktopHtmlTypePlugin(
@@ -60,6 +66,7 @@ class DesktopHtmlTypePlugin(
6066
) {
6167
if (transferData is String) {
6268
val html = extractHtml(transferData)
69+
val background = HtmlColorUtils.getBackgroundColor(html) ?: Color.Transparent
6370
val htmlBytes = html.encodeToByteArray()
6471
val hash = codecsUtils.hash(htmlBytes)
6572
val size = htmlBytes.size.toLong()
@@ -69,7 +76,13 @@ class DesktopHtmlTypePlugin(
6976
hash = hash,
7077
size = size,
7178
html = html,
72-
extraInfo = pasteItem.extraInfo,
79+
extraInfo =
80+
updateExtraInfo(
81+
pasteItem.extraInfo,
82+
update = {
83+
put(BACKGROUND, background.toArgb())
84+
},
85+
),
7386
)
7487
}
7588
pasteCollector.updateCollectItem(itemIndex, this::class, update)

app/src/desktopMain/kotlin/com/crosspaste/rendering/ChromeModuleLoader.kt

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)