diff --git a/app/assets/javascripts/admin/addon/components/admin-permalink-form.gjs b/app/assets/javascripts/admin/addon/components/admin-permalink-form.gjs index 8f77fcd7247..cf714ac8cc1 100644 --- a/app/assets/javascripts/admin/addon/components/admin-permalink-form.gjs +++ b/app/assets/javascripts/admin/addon/components/admin-permalink-form.gjs @@ -87,9 +87,7 @@ export default class AdminFlagsForm extends Component { permalink_type: data.permalinkType, permalink_type_value: this.valueForPermalinkType(data), }); - this.adminPermalinks.model.allLinks.unshift( - Permalink.create(result.payload) - ); + this.adminPermalinks.model.unshift(Permalink.create(result.payload)); this.router.transitionTo("adminPermalinks"); } catch (error) { popupAjaxError(error); @@ -108,12 +106,10 @@ export default class AdminFlagsForm extends Component { permalink_type_value: this.valueForPermalinkType(data), } ); - const index = this.adminPermalinks.model.allLinks.findIndex( + const index = this.adminPermalinks.model.findIndex( (permalink) => permalink.id === this.args.permalink.id ); - this.adminPermalinks.model.allLinks[index] = Permalink.create( - result.payload - ); + this.adminPermalinks.model[index] = Permalink.create(result.payload); this.router.transitionTo("adminPermalinks"); } catch (error) { popupAjaxError(error); diff --git a/app/assets/javascripts/admin/addon/controllers/admin-permalinks-index.js b/app/assets/javascripts/admin/addon/controllers/admin-permalinks-index.js index 90797c549cd..a70a45a0c31 100644 --- a/app/assets/javascripts/admin/addon/controllers/admin-permalinks-index.js +++ b/app/assets/javascripts/admin/addon/controllers/admin-permalinks-index.js @@ -49,7 +49,7 @@ export default class AdminPermalinksIndexController extends Controller { didConfirm: async () => { try { await this.store.destroyRecord("permalink", permalink); - this.model.allLinks.removeObject(permalink); + this.model.removeObject(permalink); } catch { this.dialog.alert(i18n("generic_error")); } diff --git a/app/assets/javascripts/admin/addon/models/permalink.js b/app/assets/javascripts/admin/addon/models/permalink.js index 67327877d59..3fb34c62fd8 100644 --- a/app/assets/javascripts/admin/addon/models/permalink.js +++ b/app/assets/javascripts/admin/addon/models/permalink.js @@ -5,18 +5,9 @@ import Category from "discourse/models/category"; import RestModel from "discourse/models/rest"; export default class Permalink extends RestModel { - static findAll(filter) { - return ajax("/admin/permalinks.json").then(function (permalinks) { - let allLinks = permalinks.map((p) => Permalink.create(p)); - - let filteredLinks = filter - ? allLinks.filter( - (p) => p.url.includes(filter) || p.external_url?.includes(filter) - ) - : allLinks; - - return { allLinks, filteredLinks }; - }); + static async findAll(filter) { + const data = await ajax("/admin/permalinks.json", { data: { filter } }); + return data.map((p) => Permalink.create(p)); } @discourseComputed("category_id") diff --git a/app/assets/javascripts/admin/addon/routes/admin-permalinks-index.js b/app/assets/javascripts/admin/addon/routes/admin-permalinks-index.js new file mode 100644 index 00000000000..66de319c61a --- /dev/null +++ b/app/assets/javascripts/admin/addon/routes/admin-permalinks-index.js @@ -0,0 +1,8 @@ +import DiscourseRoute from "discourse/routes/discourse"; + +export default class AdminPermalinksIndexRoute extends DiscourseRoute { + setupController(controller, model) { + super.setupController(...arguments); + controller.set("hasPermalinks", model.length > 0); + } +} diff --git a/app/assets/javascripts/admin/addon/templates/permalinks-index.hbs b/app/assets/javascripts/admin/addon/templates/permalinks-index.hbs index 4d0ab4482f5..c08c48adea2 100644 --- a/app/assets/javascripts/admin/addon/templates/permalinks-index.hbs +++ b/app/assets/javascripts/admin/addon/templates/permalinks-index.hbs @@ -1,5 +1,5 @@ - {{#if this.model.allLinks.length}} + {{#if this.hasPermalinks}}