[geary/mjog/email-plugins: 51/61] Plugin.EmailStore: Ensure email-sent is emitted by email plugins
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/mjog/email-plugins: 51/61] Plugin.EmailStore: Ensure email-sent is emitted by email plugins
- Date: Mon, 30 Mar 2020 10:07:52 +0000 (UTC)
commit e56b155c2716054743d1a900380d86f5f1f4032d
Author: Michael Gratton <mike vee net>
Date: Sun Mar 22 16:29:48 2020 +1100
Plugin.EmailStore: Ensure email-sent is emitted by email plugins
src/client/application/application-controller.vala | 4 ++++
src/client/application/application-email-context.vala | 5 +++++
src/client/application/application-plugin-manager.vala | 11 ++++++++++-
3 files changed, 19 insertions(+), 1 deletion(-)
---
diff --git a/src/client/application/application-controller.vala
b/src/client/application/application-controller.vala
index 9789dc03..ec892c5e 100644
--- a/src/client/application/application-controller.vala
+++ b/src/client/application/application-controller.vala
@@ -1472,6 +1472,10 @@ internal class Application.Controller : Geary.BaseObject {
this.plugins.get_notification_contexts()) {
plugin.email_sent(context.account.information, sent);
}
+ foreach (EmailContext plugin in
+ this.plugins.get_email_contexts()) {
+ plugin.email_sent(context.account.information, sent);
+ }
}
}
diff --git a/src/client/application/application-email-context.vala
b/src/client/application/application-email-context.vala
index 7f78567e..dd8a13df 100644
--- a/src/client/application/application-email-context.vala
+++ b/src/client/application/application-email-context.vala
@@ -29,6 +29,11 @@ internal class Application.EmailContext :
return this.email;
}
+ internal void email_sent(Geary.AccountInformation account,
+ Geary.Email email) {
+ this.email.email_sent(email_factory.to_plugin_email(email, account));
+ }
+
internal void destroy() {
this.email_factory.destroy_email_store(this.email);
}
diff --git a/src/client/application/application-plugin-manager.vala
b/src/client/application/application-plugin-manager.vala
index 7ffc9972..89bc02be 100644
--- a/src/client/application/application-plugin-manager.vala
+++ b/src/client/application/application-plugin-manager.vala
@@ -168,6 +168,8 @@ public class Application.PluginManager : GLib.Object {
new Gee.HashMap<Peas.PluginInfo,PluginContext>();
private Gee.Map<Peas.PluginInfo,NotificationContext> notification_contexts =
new Gee.HashMap<Peas.PluginInfo,NotificationContext>();
+ private Gee.Map<Peas.PluginInfo,EmailContext> email_contexts =
+ new Gee.HashMap<Peas.PluginInfo,EmailContext>();
public PluginManager(Client application) throws GLib.Error {
@@ -279,6 +281,10 @@ public class Application.PluginManager : GLib.Object {
return this.notification_contexts.values.read_only_view;
}
+ internal Gee.Collection<EmailContext> get_email_contexts() {
+ return this.email_contexts.values.read_only_view;
+ }
+
private void on_load_plugin(Peas.PluginInfo info) {
var plugin_application = new ApplicationImpl(
info, this.application, this.folders_factory
@@ -315,10 +321,12 @@ public class Application.PluginManager : GLib.Object {
var email = plugin as Plugin.EmailExtension;
if (email != null) {
- email.email = new EmailContext(
+ var context = new EmailContext(
this.application,
this.email_factory
);
+ this.email_contexts.set(info, context);
+ email.email = context;
}
var folder = plugin as Plugin.FolderExtension;
@@ -407,6 +415,7 @@ public class Application.PluginManager : GLib.Object {
if (email != null) {
var email_context = email.email as Application.EmailContext;
if (email_context != null) {
+ this.email_contexts.unset(context.info);
email_context.destroy();
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]