bleeter/client/main.lua
Bjoern Flessing 84d0089207 Chatbefehl /bleeter entfernt
Bleeter gehoert in den IC-Computer: dort sitzt man an einem Geraet, statt
mitten auf der Strasse ein Fenster aufzuklappen. Ein Chatbefehl umgeht das und
macht die Oberflaeche ueberall verfuegbar.

Der Export OpenBleeter bleibt, damit andere Resources sie oeffnen koennen -
etwa ein Telefon. Config.Command faellt weg, ohne Befehl hat es keine Bedeutung.
2026-08-09 12:43:36 +00:00

194 lines
5.6 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local isOpen = false
local _openMode = 'phone' -- 'phone' | 'desktop'
local function nui(action, payload)
payload = payload or {}
payload.action = action
SendNUIMessage(payload)
end
local function setOpen(nextOpen, mode)
isOpen = nextOpen == true
if isOpen and mode then _openMode = mode end
SetNuiFocus(isOpen, isOpen)
if isOpen then
nui('open', { mode = _openMode })
TriggerServerEvent('bleeter:server:requestBootstrap')
else
nui('close')
end
end
-- Kein PC-Modus mehr.
--
-- Bleeter im PC lief zunaechst als iframe, dessen Nachrichten hierher und
-- wieder zurueck gereicht wurden. Das ging schief, weil SetNuiFocus global
-- gilt: zwei Resourcen, die den Fokus beanspruchen, sperren die Maus aus.
--
-- pc-live bringt jetzt eine eigene Oberflaeche mit und spricht direkt mit
-- bleeter:server:*. Diese Resource kuemmert sich nur noch um ihr eigenes
-- Fenster so wie jede andere auch.
CreateThread(function()
while true do
if isOpen then
DisableAllControlActions(0)
Wait(0)
else
Wait(250)
end
end
end)
RegisterNetEvent('bleeter:client:open', function(mode)
setOpen(true, mode or 'phone')
end)
RegisterNetEvent('bleeter:client:close', function()
setOpen(false)
end)
RegisterNetEvent('bleeter:client:data', function(payload)
nui('data', payload or {})
end)
RegisterNetEvent('bleeter:client:notify', function(payload)
nui('notify', payload or {})
end)
RegisterNetEvent('bleeter:client:mediaUploaded', function(payload)
nui('mediaUploaded', payload or {})
end)
RegisterNUICallback('close', function(_, cb)
setOpen(false)
cb({ ok = true })
end)
RegisterNUICallback('checkHandle', function(payload, cb)
TriggerServerEvent('bleeter:server:checkHandle', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('registerAccount', function(payload, cb)
TriggerServerEvent('bleeter:server:registerAccount', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('requestBootstrap', function(_, cb)
TriggerServerEvent('bleeter:server:requestBootstrap')
cb({ ok = true })
end)
RegisterNUICallback('setActiveProfile', function(payload, cb)
TriggerServerEvent('bleeter:server:setActiveProfile', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('followProfile', function(payload, cb)
TriggerServerEvent('bleeter:server:followProfile', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('unfollowProfile', function(payload, cb)
TriggerServerEvent('bleeter:server:unfollowProfile', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('blockProfile', function(payload, cb)
TriggerServerEvent('bleeter:server:blockProfile', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('unblockProfile', function(payload, cb)
TriggerServerEvent('bleeter:server:unblockProfile', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('moderateProfile', function(payload, cb)
TriggerServerEvent('bleeter:server:moderateProfile', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('updateProfile', function(payload, cb)
TriggerServerEvent('bleeter:server:updateProfile', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('openMailTo', function(payload, cb)
setOpen(false)
TriggerServerEvent('bleeter:server:openMailTo', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('createPost', function(payload, cb)
TriggerServerEvent('bleeter:server:createPost', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('uploadMedia', function(payload, cb)
TriggerServerEvent('bleeter:server:uploadMedia', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('togglePostLike', function(payload, cb)
TriggerServerEvent('bleeter:server:togglePostLike', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('deleteOwnPost', function(payload, cb)
TriggerServerEvent('bleeter:server:deleteOwnPost', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('createComment', function(payload, cb)
TriggerServerEvent('bleeter:server:createComment', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('toggleCommentLike', function(payload, cb)
TriggerServerEvent('bleeter:server:toggleCommentLike', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('deleteOwnComment', function(payload, cb)
TriggerServerEvent('bleeter:server:deleteOwnComment', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('createMarketplaceEntry', function(payload, cb)
TriggerServerEvent('bleeter:server:createMarketplaceEntry', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('deleteMarketplaceEntry', function(payload, cb)
TriggerServerEvent('bleeter:server:deleteMarketplaceEntry', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('createEvent', function(payload, cb)
TriggerServerEvent('bleeter:server:createEvent', payload or {})
cb({ ok = true })
end)
RegisterNUICallback('deleteEvent', function(payload, cb)
TriggerServerEvent('bleeter:server:deleteEvent', payload or {})
cb({ ok = true })
end)
-- Kein /bleeter-Befehl mehr.
--
-- Bleeter gehoert in den IC-Computer: dort sitzt man an einem Geraet, statt
-- mitten auf der Strasse ein Fenster aufzuklappen. Der Export bleibt, damit
-- andere Resources es oeffnen koennen - etwa ein Telefon.
exports('OpenBleeter', function(mode)
setOpen(true, mode or 'phone')
end)
-- Beim Start sicherstellen dass die NUI geschlossen ist
AddEventHandler('onClientResourceStart', function(name)
if name == GetCurrentResourceName() then
SetNuiFocus(false, false)
nui('close')
end
end)