@action
    async parseDefaultFilters() {
        // we need to make sure all the filters are loaded before parsing the default filter
        // otherwise the filter will be parsed with the wrong properties
        try {
            this.isLoading = true;

            await this.fetchTiers.perform();
            await this.fetchNewsletters.perform();
            await this.fetchOffers.perform();
        } catch (e) {
            // Do not throw cancellation errors
            if (didCancel(e)) {
                return;
            }

            throw e;
        } finally {
            this.isLoading = false;
        }

        if (this.args.defaultFilterParam) {
            // check if it is different before parsing
            const validFilters = this.validFilters;
            const currentFilter = this.generateNqlFilter(validFilters);

            if (currentFilter !== this.args.defaultFilterParam) {
                this.parseNqlFilterString(this.args.defaultFilterParam);

                // Pass the parsed filter to the parent component
                // this doesn't start a new network request, and doesn't update filterParam again
                this.applyParsedFilter();
            }
        }
    }
This method is not super clean as it uses did-update, but for now this is required to make URL changes work
properly.
Problem: filter parameter is changed in the members controller by modifying the URL directly
-> the filters property is not updated in the members controller because the new parameter is not parsed again
-> we need to listen for changes in the property and parse it again
-> better future proof solution: move the filter parsing logic elsewhere so it can be parsed in the members controller