mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: prevents double network calls and other quirks on admin emails (#7074)
This commit is contained in:
parent
75aaae5d5c
commit
fbedaea5ed
@ -1,9 +1,8 @@
|
|||||||
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
||||||
import debounce from "discourse/lib/debounce";
|
import debounce from "discourse/lib/debounce";
|
||||||
import EmailLog from "admin/models/email-log";
|
|
||||||
|
|
||||||
export default AdminEmailLogsController.extend({
|
export default AdminEmailLogsController.extend({
|
||||||
filterEmailLogs: debounce(function() {
|
filterEmailLogs: debounce(function() {
|
||||||
EmailLog.findAll(this.get("filter")).then(logs => this.set("model", logs));
|
this.loadLogs();
|
||||||
}, 250).observes("filter.{user,address,type}")
|
}, 250).observes("filter.{status,user,address,type}")
|
||||||
});
|
});
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
import IncomingEmail from "admin/models/incoming-email";
|
|
||||||
|
|
||||||
export default Ember.Controller.extend({
|
|
||||||
loading: false,
|
|
||||||
|
|
||||||
actions: {
|
|
||||||
loadMore() {
|
|
||||||
if (this.get("loading") || this.get("model.allLoaded")) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.set("loading", true);
|
|
||||||
|
|
||||||
IncomingEmail.findAll(this.get("filter"), this.get("model.length"))
|
|
||||||
.then(incoming => {
|
|
||||||
if (incoming.length < 50) {
|
|
||||||
this.get("model").set("allLoaded", true);
|
|
||||||
}
|
|
||||||
this.get("model").addObjects(incoming);
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
this.set("loading", false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
@ -3,23 +3,34 @@ import EmailLog from "admin/models/email-log";
|
|||||||
export default Ember.Controller.extend({
|
export default Ember.Controller.extend({
|
||||||
loading: false,
|
loading: false,
|
||||||
|
|
||||||
|
loadLogs(sourceModel, loadMore) {
|
||||||
|
if ((loadMore && this.get("loading")) || this.get("model.allLoaded")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.set("loading", true);
|
||||||
|
|
||||||
|
sourceModel = sourceModel || EmailLog;
|
||||||
|
|
||||||
|
return sourceModel
|
||||||
|
.findAll(this.get("filter"), loadMore ? this.get("model.length") : null)
|
||||||
|
.then(logs => {
|
||||||
|
if (this.get("model") && loadMore && logs.length < 50) {
|
||||||
|
this.get("model").set("allLoaded", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.get("model") && loadMore) {
|
||||||
|
this.get("model").addObjects(logs);
|
||||||
|
} else {
|
||||||
|
this.set("model", logs);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.finally(() => this.set("loading", false));
|
||||||
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
loadMore() {
|
loadMore() {
|
||||||
if (this.get("loading") || this.get("model.allLoaded")) {
|
this.loadLogs(EmailLog, true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.set("loading", true);
|
|
||||||
return EmailLog.findAll(this.get("filter"), this.get("model.length"))
|
|
||||||
.then(logs => {
|
|
||||||
if (logs.length < 50) {
|
|
||||||
this.get("model").set("allLoaded", true);
|
|
||||||
}
|
|
||||||
this.get("model").addObjects(logs);
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
this.set("loading", false);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
import AdminEmailIncomingsController from "admin/controllers/admin-email-incomings";
|
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
||||||
import debounce from "discourse/lib/debounce";
|
import debounce from "discourse/lib/debounce";
|
||||||
import IncomingEmail from "admin/models/incoming-email";
|
import IncomingEmail from "admin/models/incoming-email";
|
||||||
|
|
||||||
export default AdminEmailIncomingsController.extend({
|
export default AdminEmailLogsController.extend({
|
||||||
filterIncomingEmails: debounce(function() {
|
filterIncomingEmails: debounce(function() {
|
||||||
IncomingEmail.findAll(this.get("filter")).then(incomings =>
|
this.loadLogs(IncomingEmail);
|
||||||
this.set("model", incomings)
|
}, 250).observes("filter.{status,from,to,subject}"),
|
||||||
);
|
|
||||||
}, 250).observes("filter.{from,to,subject}")
|
actions: {
|
||||||
|
loadMore() {
|
||||||
|
this.loadLogs(IncomingEmail, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
import AdminEmailIncomingsController from "admin/controllers/admin-email-incomings";
|
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
||||||
import debounce from "discourse/lib/debounce";
|
import debounce from "discourse/lib/debounce";
|
||||||
import IncomingEmail from "admin/models/incoming-email";
|
import IncomingEmail from "admin/models/incoming-email";
|
||||||
|
|
||||||
export default AdminEmailIncomingsController.extend({
|
export default AdminEmailLogsController.extend({
|
||||||
filterIncomingEmails: debounce(function() {
|
filterIncomingEmails: debounce(function() {
|
||||||
IncomingEmail.findAll(this.get("filter")).then(incomings =>
|
this.loadLogs(IncomingEmail);
|
||||||
this.set("model", incomings)
|
}, 250).observes("filter.{status,from,to,subject,error}"),
|
||||||
);
|
|
||||||
}, 250).observes("filter.{from,to,subject,error}")
|
actions: {
|
||||||
|
loadMore() {
|
||||||
|
this.loadLogs(IncomingEmail, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
||||||
import debounce from "discourse/lib/debounce";
|
import debounce from "discourse/lib/debounce";
|
||||||
import EmailLog from "admin/models/email-log";
|
|
||||||
|
|
||||||
export default AdminEmailLogsController.extend({
|
export default AdminEmailLogsController.extend({
|
||||||
filterEmailLogs: debounce(function() {
|
filterEmailLogs: debounce(function() {
|
||||||
EmailLog.findAll(this.get("filter")).then(logs => this.set("model", logs));
|
this.loadLogs();
|
||||||
}, 250).observes("filter.{user,address,type,reply_key}")
|
}, 250).observes("filter.{status,user,address,type,reply_key}")
|
||||||
});
|
});
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
|
||||||
import debounce from "discourse/lib/debounce";
|
import debounce from "discourse/lib/debounce";
|
||||||
import EmailLog from "admin/models/email-log";
|
|
||||||
|
|
||||||
export default AdminEmailLogsController.extend({
|
export default AdminEmailLogsController.extend({
|
||||||
filterEmailLogs: debounce(function() {
|
filterEmailLogs: debounce(function() {
|
||||||
EmailLog.findAll(this.get("filter")).then(logs => this.set("model", logs));
|
this.loadLogs();
|
||||||
}, 250).observes("filter.{user,address,type}")
|
}, 250).observes("filter.{status,user,address,type}")
|
||||||
});
|
});
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
import EmailLog from "admin/models/email-log";
|
|
||||||
|
|
||||||
export default Discourse.Route.extend({
|
export default Discourse.Route.extend({
|
||||||
model() {
|
setupController(controller) {
|
||||||
return EmailLog.findAll({ status: this.get("status") });
|
controller.setProperties({
|
||||||
},
|
loading: true,
|
||||||
|
filter: { status: this.get("status") }
|
||||||
setupController(controller, model) {
|
});
|
||||||
controller.set("model", model);
|
|
||||||
controller.set("filter", { status: this.get("status") });
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -31,7 +31,9 @@
|
|||||||
<td><a {{action "showIncomingEmail" l.id}}>{{l.email_type}}</a></td>
|
<td><a {{action "showIncomingEmail" l.id}}>{{l.email_type}}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{{else}}
|
{{else}}
|
||||||
<tr><td colspan="4">{{i18n 'admin.email.logs.none'}}</td></tr>
|
{{#unless loading}}
|
||||||
|
<tr><td colspan="4">{{i18n 'admin.email.logs.none'}}</td></tr>
|
||||||
|
{{/unless}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
@ -44,7 +44,9 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{else}}
|
{{else}}
|
||||||
<tr><td colspan="5">{{i18n 'admin.email.logs.none'}}</td></tr>
|
{{#unless loading}}
|
||||||
|
<tr><td colspan="5">{{i18n 'admin.email.logs.none'}}</td></tr>
|
||||||
|
{{/unless}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
@ -40,7 +40,9 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{else}}
|
{{else}}
|
||||||
<tr><td colspan="5">{{i18n 'admin.email.logs.none'}}</td></tr>
|
{{#unless loading}}
|
||||||
|
<tr><td colspan="5">{{i18n 'admin.email.logs.none'}}</td></tr>
|
||||||
|
{{/unless}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
Loading…
Reference in New Issue
Block a user