Skip to content

Commit 68f8f00

Browse files
committed
feat: improve mobile support
1 parent 6c3fd11 commit 68f8f00

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

src/content-script/index.jsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,45 @@ async function prepareForSelectionTools() {
138138
})
139139
}
140140

141+
async function prepareForSelectionToolsTouch() {
142+
document.addEventListener('touchend', (e) => {
143+
if (toolbarContainer && toolbarContainer.contains(e.target)) return
144+
if (
145+
toolbarContainer &&
146+
window.getSelection()?.rangeCount > 0 &&
147+
toolbarContainer.contains(window.getSelection()?.getRangeAt(0).endContainer.parentElement)
148+
)
149+
return
150+
151+
if (toolbarContainer) toolbarContainer.remove()
152+
setTimeout(() => {
153+
const selection = window.getSelection()?.toString()
154+
if (selection) {
155+
const position = {
156+
x: e.changedTouches[0].clientX + 15,
157+
y: e.changedTouches[0].clientY - 15,
158+
}
159+
toolbarContainer = createElementAtPosition(position.x, position.y)
160+
toolbarContainer.className = 'toolbar-container'
161+
render(
162+
<FloatingToolbar
163+
session={initSession()}
164+
selection={selection}
165+
position={position}
166+
container={toolbarContainer}
167+
/>,
168+
toolbarContainer,
169+
)
170+
}
171+
})
172+
})
173+
document.addEventListener('touchstart', (e) => {
174+
if (toolbarContainer && toolbarContainer.contains(e.target)) return
175+
176+
document.querySelectorAll('.toolbar-container').forEach((e) => e.remove())
177+
})
178+
}
179+
141180
let menuX, menuY
142181

143182
async function prepareForRightClickMenu() {
@@ -220,6 +259,7 @@ async function run() {
220259
userConfig = await getUserConfig()
221260
if (isSafari()) await prepareForSafari()
222261
prepareForSelectionTools()
262+
prepareForSelectionToolsTouch()
223263
prepareForStaticCard()
224264
prepareForRightClickMenu()
225265
}

src/content-script/site-adapters/index.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,9 @@ export const config = {
144144
},
145145
zhihu: {
146146
inputQuery: zhihu.inputQuery,
147-
sidebarContainerQuery: ['.Question-sideColumn', '.Post-Header'],
147+
sidebarContainerQuery: ['.Question-sideColumn', '.Post-Header', '.Question-main'],
148148
appendContainerQuery: [],
149-
resultsContainerQuery: ['.Question-sideColumn', '.Post-Header'],
149+
resultsContainerQuery: ['.Question-sideColumn', '.Post-Header', '.Question-main'],
150150
},
151151
reddit: {
152152
inputQuery: reddit.inputQuery,

src/utils/is-mobile.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser
22

33
export async function isMobile() {
4+
if (navigator.userAgentData) return navigator.userAgentData.mobile
45
let check = false
56
;(function (a) {
67
if (

0 commit comments

Comments
 (0)