Age | Commit message (Collapse) | Author |
|
imaps+oauthbearer://user:token@host?token_endpoint=...
- the config Source password is used as access token if
no token_endpoint parameter is set
- the config Source password is used as refresh token if
token_endpoint parameter is set, and used to exchange
with an access token
The implementation has only been tested with Gmail.
source = imaps+oauthbearer://{username}:{refersh_token}@imap.gmail.com:993? \
client_id=XX&\
client_secret=XX&\
token_endpoint=https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Ftoken
client credentials created with
https://console.developers.google.com/apis/credentials
refresh token created with
https://github.com/google/gmail-oauth2-tools/blob/master/python/oauth2.py
rel: https://todo.sr.ht/~sircmpwn/aerc2/42
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Before, we were using several IMAP-specific concepts to represent
information being displayed in the UI. Factor these structures out of
the IMAP package to make it easier for other backends to provide the
required information.
|
|
A sequence-set is an IMAP-specific implementation detail. Throughout the
UI, aerc simply operates using lists of opaque identifiers. In order to
loosen the coupling between the UI and IMAP in particular, replace most
usages of imap.SeqSet with []uint32, leaving the translation to a SeqSet
to the IMAP backend as needed.
|
|
Before, the information needed to display different parts of the UI was
tightly coupled to the specific messages being sent back and forth to
the backend worker. Separating out a models package allows us to be more
specific about exactly what a backend is able to and required to
provide for the UI.
|
|
|
|
|
|
|
|
|
|
Assuming we always have a sorted dirlist
(other code depends on that already), we don't need to loop over the
dirStore.
Any filtering done should be performed elsewhere
|
|
|
|
Also sets the public List() method to return the unfiltered
list of directories directly from the store.
|
|
Credit for this fix goes to Reto; I guess if we're not gonna be mutt
we should probabaly do things correctly.
|
|
Now that this is available in the upstream, we no longer need to
maintain a parallel implementation.
|
|
|
|
|
|
The unsubscribe command, available when in a message viewer context,
enables users to easily unsubscribe from mailing lists.
When the command is executed, aerc looks for a List-Unsubscribe header
as defined in RFC 2369. If found, aerc will attempt to present the user
with a suitable interface for completing the request. Currently, mailto
and http(s) URLs are supported. In the case of a HTTP(S) URL, aerc will
open the link in a browser. For mailto links, a new composer tab will be
opened with a message filled out according to the URL. The message is
not sent automatically in order to provide the user a chance to review
it first.
Closes #101
|
|
|
|
|
|
|
|
This reverts commit 0e55637aac92e748267559b7aa91a188a17c386f.
|
|
This fixes prev/next-folder that broke after
546dfcd76dd228e0605359e9985f0b6a5672e8fa
|
|
|
|
|
|
Tab completion currently only works on commands. Contextual completion
will be added in the future.
|
|
|
|
Because editors like vim use backupfiles and rename them to the original
name, the file handle used can point to the wrong file. Reopening the
file should fix this.
|
|
This is the way to declare which compiler version a module requires to build.
I read up on https://golang.org/doc/go1.12#modules
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Aerc uses the go linker to add some variables like main.Prefix / main.ShareDir
etc. however the go linker only considers the last -ldflags invocation it seems.
This commit fixes the makefile to use only a single -ldflags invocation, which
again sets the vars as expected.
|
|
Many email providers use the imap sub-domain for imap and the smtp
sub-domain for smtp. FastMail is an example of this[1]. This is a small
quality-of-life improvement which automatically replaces imap.* with
smtp.* when going from the imap screen to the smtp screen in the wizard
[1]: https://www.fastmail.com/help/technical/servernamesandports.html
|
|
If these are called before the store is setup, `acct.Store()` returns
`nil`, and we SEGFAULT in `MessageStore.nextPrev`.
|
|
|
|
|
|
commands/msgview/save and commands/msgview/pipe now use case
insensitive comparisons to determine if the part is encoded as base64
or quoted-printable.
|
|
The current implementation has three classes of flags:
- readFlag
- delFlag
- flaggedFlag
The logic to check for them should be in parallel if branches rather
than in sequential if-else ladder.
|