- name: flush handlers to ensure that friendica is up before friendica addon configuration
  meta: flush_handlers

- name: Build friendica_addons based on features
  set_fact:
    friendica_addons: >-
      {{
        friendica_addons | default([])
        + [{
            'name': item.key,
            'enabled': (
              applications | get_app_conf(application_id, 'features.oidc', True)
                if item.key == 'keycloakpassword'
              else applications | get_app_conf(application_id, 'features.ldap', True)
                if item.key == 'ldapauth'
              else (item.value.enabled if item.value is mapping and 'enabled' in item.value else False)
            )
          }]
      }}
  loop: "{{ applications | get_app_conf(application_id, 'addons', True) | dict2items }}"
  loop_control:
    label: "{{ item.key }}"

- name: Ensure Friendica addons are in sync
  command: >
    docker compose exec --user {{ friendica_user }}
    application
    bin/console addon
    {{ 'enable' if item.enabled else 'disable' }}
    {{ item.name }}
  args:
    chdir: "{{ docker_compose.directories.instance }}"
  loop: "{{ friendica_addons }}"
  loop_control:
    label: "{{ item.name }}"