diff --git a/app/constants.js b/app/constants.js index 07165fbc6..fd1387910 100644 --- a/app/constants.js +++ b/app/constants.js @@ -23,17 +23,15 @@ const ActivityCategories = [ 'Algemeen', 'Sociëteit', 'Vorming', - 'Dinsdagkring', - 'Woensdagkring', + 'Kring', 'ChOOSE', 'IFES', 'OZON', 'Disputen', - 'Kiemgroepen', + 'Genootschapen', 'Huizen', 'Extern', 'Eerstejaars', - 'Curiositates', ]; const OpenQuestionTypes = ['text', 'textarea', 'number']; diff --git a/app/controllers/activities/ical.js b/app/controllers/activities/ical.js index ae3fad973..2f2a8aced 100644 --- a/app/controllers/activities/ical.js +++ b/app/controllers/activities/ical.js @@ -1,13 +1,12 @@ -import Controller from '@ember/controller'; +import EditController from 'amber-ui/controllers/application/edit'; // eslint-disable-next-line ember/no-computed-properties-in-native-classes import { computed } from '@ember/object'; import { inject as service } from '@ember/service'; import { ActivityCategories } from 'amber-ui/constants'; import { tracked } from '@glimmer/tracking'; -export default class ActivitiesIcalController extends Controller { +export default class ActivitiesIcalController extends EditController { @service session; - @tracked activityCategoryOptions; constructor() { @@ -24,10 +23,9 @@ export default class ActivitiesIcalController extends Controller { @computed('activityCategoryOptions.@each.checked') get categoriesParams() { - const selected = this.activityCategoryOptions + return this.activityCategoryOptions .filter((category) => category.checked) .map((category) => category.value); - return `categories=${selected.join(',')}`; } get iCalBase() { @@ -35,11 +33,11 @@ export default class ActivitiesIcalController extends Controller { } get iCalURL() { - return `${window.location.origin}${this.iCalBase}&${this.categoriesParams}`; + return `${window.location.origin}${this.iCalBase}`; } get webcalURL() { - return `webcal://${window.location.host}${this.iCalBase}&${this.categoriesParams}`; + return `webcal://${window.location.host}${this.iCalBase}`; } _activityCategoryToOption(activityCategory) { @@ -49,4 +47,23 @@ export default class ActivitiesIcalController extends Controller { checked: true, }; } + + saveCategories = () => { + const { currentUser } = this.session; + const selectedCategories = this.categoriesParams; + + currentUser.set('icalCategories', selectedCategories); + + return currentUser + .save() + .then(() => { + this.flashNotice.sendSuccess('Categorieën succesvol opgeslagen!'); + }) + .catch((error) => { + this.flashNotice.sendError( + 'Er ging iets fout bij het opslaan van je categorieën.' + ); + console.error('Failed to save categories:', error); + }); + }; } diff --git a/app/models/user.js b/app/models/user.js index 63c103a31..3ffe3228e 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -45,6 +45,7 @@ export default class User extends Model { // Security properties @attr otpRequired; @attr icalSecretKey; + @attr icalCategories; @attr password; // Technical properties diff --git a/app/templates/activities/ical.hbs b/app/templates/activities/ical.hbs index c0da45e18..b52c28edf 100644 --- a/app/templates/activities/ical.hbs +++ b/app/templates/activities/ical.hbs @@ -7,9 +7,8 @@

- Als je de agenda's die je wilt volgen wilt aanpassen, dien je eerst - in je agenda-programma je oude Alpha-agenda te verwijderen voordat - je de nieuwe agenda-url toevoegt. + Als je de agenda's die je wilt volgen wilt aanpassen, update die automatisch + de bestaande agenda's in je agenda-applicatie.

Hoe je de agenda in Google Calendar importeert staat @@ -17,8 +16,9 @@ uitgelegd.

+
- {{#each activityCategoryOptions as |opt|}} + {{#each this.activityCategoryOptions as |opt|}}
{{/each}} +
+ +

@@ -51,8 +56,8 @@ anderen.
-

{{iCalURL}}

+

{{this.iCalURL}}

- \ No newline at end of file + diff --git a/mirage/factories/activity.js b/mirage/factories/activity.js index 27014874f..277f14dd5 100644 --- a/mirage/factories/activity.js +++ b/mirage/factories/activity.js @@ -16,16 +16,14 @@ export default Factory.extend({ 'algemeen', 'sociëteit', 'vorming', - 'dinsdagkring', - 'woensdagkring', + 'kring', 'choose', 'ifes', 'ozon', 'disputen', - 'kiemgroepen', + 'genootschapen', 'huizen', 'extern', - 'curiositates', ]), afterCreate(activity, server) {