Files
qt-creator/share/qtcreator/lua-plugins/tellajoke/tellajoke.lua

57 lines
1.6 KiB
Lua
Raw Normal View History

--- Copyright (C) 2024 The Qt Company Ltd.
--- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
local function fetchJoke()
print("Fetching ...")
local a = require("async")
local fetch = require("Fetch").fetch
local utils = require("Utils")
local mm = require("MessageManager")
local r = a.wait(fetch({ url = "https://official-joke-api.appspot.com/random_joke", convertToTable = true }))
if (type(r) == "table") then
mm.writeDisrupting(r.setup)
a.wait(utils.waitms(1000))
mm.writeSilently(".")
a.wait(utils.waitms(1000))
mm.writeSilently(".")
a.wait(utils.waitms(1000))
mm.writeSilently(".")
a.wait(utils.waitms(1000))
mm.writeDisrupting(r.punchline)
else
print("echo Error fetching: " .. r)
end
end
local function fetchJokeSafe()
local ok, err = pcall(fetchJoke)
if not ok then
print("echo Error fetching: " .. err)
end
end
local function setup()
local a = require("async")
Action = require("Action")
Action.create("Simple.joke", {
text = "Tell a joke",
onTrigger = function() a.sync(fetchJokeSafe)() end,
defaultKeySequences = { "Meta+Ctrl+Shift+J", "Ctrl+Shift+Alt+J" },
})
end
return {
Name = "Tell A Joke",
Version = "1.0.0",
CompatVersion = "1.0.0",
Vendor = "The Qt Company",
Category = "Fun",
Description = "This plugin adds an action that tells a joke.",
Dependencies = {
{ Name = "Lua", Version = "14.0.0" },
},
setup = setup,
} --[[@as QtcPlugin]]