- Add compatible mode support

This commit is contained in:
ParticleG
2024-11-01 11:03:52 +08:00
parent e1255e6124
commit f4e04b32dd
2 changed files with 60 additions and 33 deletions

View File

@@ -16,41 +16,70 @@ local function _sanitize(content)
return content
end
-- if SYSTEM~='Web' then
-- local get = love.system.getClipboardText
-- local set = love.system.setClipboardText
-- return {
-- get=function() return get() or '' end,
-- set=function(content) set(_sanitize(content)) end,
-- _update=NULL,
-- }
-- end
if SYSTEM~='Web' then
local get = love.system.getClipboardText
local set = love.system.setClipboardText
return {
get=function() return get() or '' end,
set=function(content) set(_sanitize(content)) end,
_update=NULL,
}
end
if WEB_COMPAT_MODE then
local _clipboardBuffer=''
return {
get=function ()
JS.newPromiseRequest(
JS.stringFunc(
[[
window.navigator.clipboard
.readText()
.then((text) => _$_(text))
.catch((e) => {
console.warn(e);
_$_('');
});
]]
),
function(data) _clipboardBuffer=data end,
function(id, error) print(id, error) end,
3,
'getClipboardText'
)
return _clipboardBuffer
end,
set=function (str)
JS.callJS(JS.stringFunc(
[[
window.navigator.clipboard
.writeText('%s')
.then(() => console.log('Copied to clipboard'))
.catch((e) => console.warn(e));
]],
_sanitize(str)
))
end,
_update=NULL,
}
end
local clipboard_thread=love.thread.newThread('Zframework/clipboard_thread.lua')
local getCHN=love.thread.newChannel()
local setCHN=love.thread.newChannel()
local triggerCHN=love.thread.newChannel()
print(clipboard_thread:start(getCHN,setCHN,triggerCHN))
clipboard_thread:start(getCHN,setCHN,triggerCHN)
local clipboard={}
function clipboard.get()
return getCHN:peek() or ''
end
function clipboard.set(content)
setCHN:push(_sanitize(content))
end
function clipboard._update()
triggerCHN:push(0)
local error = clipboard_thread:getError()
if error then
MES.new('error',error)
MES.traceback()
clipboard._update=NULL
end
end
return clipboard
return{
get=function() return getCHN:peek() or '' end,
set=function(content) setCHN:push(_sanitize(content)) end,
_update=function()
triggerCHN:push(0)
local error = clipboard_thread:getError()
if error then
MES.new('error',error)
MES.traceback()
end
end,
}

View File

@@ -3,9 +3,7 @@ local getCHN,setCHN,triggerCHN=...
local CHN_demand,CHN_getCount=triggerCHN.demand,triggerCHN.getCount
local CHN_push,CHN_pop=triggerCHN.push,triggerCHN.pop
print("2");
JS=require'Zframework.js'
print("3");
local yield=coroutine.yield
local setThread=coroutine.wrap(function()