summaryrefslogtreecommitdiffstats
path: root/lua/inbox/init.lua
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2023-10-15 17:42:17 -0500
committerToby Vincent <tobyv@tobyvin.dev>2023-10-16 15:58:28 -0500
commit0de045c6a942f90c0e5c966c24855172d683ddfa (patch)
tree0236f8a2430c23bb255030da28975d3077f8d924 /lua/inbox/init.lua
parentccbee6b98ef59b5aea509965552be9dbe432ac9b (diff)
feat: render buffer of messages
Diffstat (limited to 'lua/inbox/init.lua')
-rw-r--r--lua/inbox/init.lua50
1 files changed, 9 insertions, 41 deletions
diff --git a/lua/inbox/init.lua b/lua/inbox/init.lua
index 0c3dc27..5841481 100644
--- a/lua/inbox/init.lua
+++ b/lua/inbox/init.lua
@@ -1,55 +1,23 @@
----@class inbox.Indexer
----@field setup? fun(opts: table)
----@field available? fun(): boolean
----@field index? fun(account?:string, maildir?:string): inbox.Summary[]
-
local M = {}
----@param email inbox.Summary
----@return string summary
-function M.summerize(email)
- local tags = ""
- for _, tag in pairs(email.tags) do
- tags = tags .. string.sub(tag, 1, 1)
- end
-
- local from = email.authors
- if type(email.authors) == "table" then
- from = email.authors[1] --[[@cast from string]]
- end
-
- local subject = email.subject
- if type(email.subject) == "table" then
- subject = email.subject[1] --[[@cast subject string]]
- end
- subject = subject:gsub("\r?\n", " ")
-
- local summary = {
- email.date_relative,
- from,
- tags,
- subject,
- }
-
- return table.concat(summary, "\t")
-end
-
-function M.list_mail(...)
- local config = require("inbox.config")
- local results = config.indexer.index(...)
- local lines = {}
+function M.open(maildir)
+ local view = require("inbox.view")
- for _, item in pairs(results) do
- table.insert(lines, M.summerize(item))
+ if M.bufnr == nil then
+ M.bufnr = vim.api.nvim_create_buf(true, false)
+ view.initialize(M.bufnr, maildir)
end
- return lines
+ vim.api.nvim_set_current_buf(M.bufnr)
end
---@param opts inbox.Config
function M.setup(opts)
local config = require("inbox.config")
+ local indexers = require("inbox.indexers")
+
config.setup(opts)
+ indexers.setup(config.indexer_config)
end
return M