From e3b349b117999d657ea3f26de8b13f5184117ace Mon Sep 17 00:00:00 2001
From: 778a69cd <778a69cd@potsda.mn>
Date: Mon, 3 Apr 2023 13:18:57 +0200
Subject: [PATCH] Revert "Small changes to get it actually working"

This reverts commit 47a6d0e2f27bb42ec09702397bf6094b113b3c91.
---
 js/src/graphql/admin.ts               |  6 ++---
 js/src/graphql/config.ts              |  1 -
 js/src/types/admin.model.ts           |  2 +-
 js/src/views/Admin/Settings.vue       | 36 +++++++++++++--------------
 js/src/views/Home.vue                 | 27 ++++++--------------
 lib/graphql/resolvers/config.ex       |  1 -
 lib/graphql/schema/admin.ex           |  2 +-
 lib/graphql/schema/config.ex          |  4 +--
 lib/mobilizon/config.ex               |  2 +-
 schema.graphql                        | 12 ++++-----
 test/graphql/resolvers/admin_test.exs |  6 ++---
 11 files changed, 42 insertions(+), 57 deletions(-)

diff --git a/js/src/graphql/admin.ts b/js/src/graphql/admin.ts
index cb181f493..4c6bfaecc 100644
--- a/js/src/graphql/admin.ts
+++ b/js/src/graphql/admin.ts
@@ -184,7 +184,7 @@ export const ADMIN_SETTINGS_FRAGMENT = gql`
     instanceLongDescription
     instanceSlogan
     contact
-    instanceHomepageSorting
+    InstanceHomepageSorting
     instanceTerms
     instanceTermsType
     instanceTermsUrl
@@ -213,7 +213,7 @@ export const SAVE_ADMIN_SETTINGS = gql`
     $instanceLongDescription: String
     $instanceSlogan: String
     $contact: String
-    $instanceHomepageSorting: InstanceHomepageSorting
+    $InstanceHomepageSorting: InstanceHomepageSorting
     $instanceTerms: String
     $instanceTermsType: InstanceTermsType
     $instanceTermsUrl: String
@@ -230,7 +230,7 @@ export const SAVE_ADMIN_SETTINGS = gql`
       instanceLongDescription: $instanceLongDescription
       instanceSlogan: $instanceSlogan
       contact: $contact
-      instanceHomepageSorting: $instanceHomepageSorting
+      InstanceHomepageSorting: $InstanceHomepageSorting
       instanceTerms: $instanceTerms
       instanceTermsType: $instanceTermsType
       instanceTermsUrl: $instanceTermsUrl
diff --git a/js/src/graphql/config.ts b/js/src/graphql/config.ts
index f3bf1e7d7..490346061 100644
--- a/js/src/graphql/config.ts
+++ b/js/src/graphql/config.ts
@@ -8,7 +8,6 @@ export const CONFIG = gql`
       slogan
       registrationsOpen
       registrationsAllowlist
-      instanceHomepageSorting
       demoMode
       countryCode
       languages
diff --git a/js/src/types/admin.model.ts b/js/src/types/admin.model.ts
index 3c4079e09..ed74b1062 100644
--- a/js/src/types/admin.model.ts
+++ b/js/src/types/admin.model.ts
@@ -25,7 +25,7 @@ export interface IAdminSettings {
   instanceSlogan: string;
   instanceLongDescription: string;
   contact: string;
-  instanceHomepageSorting: InstanceHomepageSorting;
+  InstanceHomepageSorting: InstanceHomepageSorting;
   instanceTerms: string;
   instanceTermsType: InstanceTermsType;
   instanceTermsUrl: string | null;
diff --git a/js/src/views/Admin/Settings.vue b/js/src/views/Admin/Settings.vue
index 578a3142d..d938c89db 100644
--- a/js/src/views/Admin/Settings.vue
+++ b/js/src/views/Admin/Settings.vue
@@ -64,26 +64,24 @@
             <p class="content" v-else>{{ $t("Registration is closed.") }}</p>
           </b-switch>
         </b-field>
-        <div class="field">
-          <b-field :label="$t('Home Page Sorting')">
-            <b-field>
-              <b-radio
-                v-model="adminSettings.instanceHomepageSorting"
-                name="instanceHomepageSorting"
-                :native-value="InstanceHomepageSorting.DEFAULT"
-                >{{ $t("Recently Created") }}</b-radio
-              >
-            </b-field>
-            <b-field>
-              <b-radio
-                v-model="adminSettings.instanceHomepageSorting"
-                name="instanceHomepageSorting"
-                :native-value="InstanceHomepageSorting.UPCOMING"
-                >{{ $t("Upcoming") }}</b-radio
-              >
-            </b-field>
+        <b-field :label="$t('Home Page Sorting')">
+          <b-field>
+            <b-radio
+              v-model="adminSettings.InstanceHomepageSorting"
+              name="InstanceHomepageSorting"
+              :native-value="InstanceHomepageSorting.DEFAULT"
+              >{{ $t("Recently Created") }}</b-radio
+            >
           </b-field>
-        </div>
+          <b-field>
+            <b-radio
+              v-model="adminSettings.InstanceHomepageSorting"
+              name="InstanceHomepageSorting"
+              :native-value="InstanceHomepageSorting.UPCOMING"
+              >{{ $t("Upcoming") }}</b-radio
+            >
+          </b-field>
+        </b-field>
         <div class="field">
           <label class="label has-help" for="instance-languages">{{
             $t("Instance languages")
diff --git a/js/src/views/Home.vue b/js/src/views/Home.vue
index ace64eff7..b36be5d72 100644
--- a/js/src/views/Home.vue
+++ b/js/src/views/Home.vue
@@ -43,15 +43,7 @@
     >
       <section class="events-recent">
         <h2 class="title">
-          {{
-            $t(
-              config &&
-                config.instanceHomepageSorting ===
-                  InstanceHomepageSorting.UPCOMING
-                ? "Upcoming Events"
-                : "Last published events"
-            )
-          }}
+          {{ $t("Last published events") }}
         </h2>
         <p>
           <i18n tag="span" path="On {instance} and other federated instances">
@@ -235,13 +227,10 @@
       <section class="events-recent">
         <h2 class="title">
           {{
-            $t(
-              config &&
-                config.instanceHomepageSorting ===
-                  InstanceHomepageSorting.UPCOMING
-                ? "Upcoming Events"
-                : "Last published events"
-            )
+            adminSettings.instanceHomepageSorting ===
+            InstanceHomepageSorting.DEFAULT
+              ? $t("Last published events")
+              : $t("Upcoming Events")
           }}
         </h2>
         <p>
@@ -295,6 +284,7 @@ import {
 } from "../types/current-user.model";
 import { CURRENT_USER_CLIENT } from "../graphql/user";
 import { CLOSE_CONTENT, HOME_USER_QUERIES } from "../graphql/home";
+import { ADMIN_SETTINGS } from "../graphql/admin";
 import RouteName from "../router/name";
 import { IEvent } from "../types/event.model";
 import DateComponent from "../components/Event/DateCalendarIcon.vue";
@@ -305,10 +295,11 @@ import Subtitle from "../components/Utils/Subtitle.vue";
 
 @Component({
   apollo: {
+    adminSettings: ADMIN_SETTINGS,
     events: {
       query: FETCH_EVENTS,
       variables() {
-        return this.config?.instanceHomepageSorting ===
+        return this.adminSettings?.InstanceHomepageSorting ===
           InstanceHomepageSorting.UPCOMING
           ? {
               orderBy: EventSortField.BEGINS_ON,
@@ -399,8 +390,6 @@ export default class Home extends Vue {
 
   config!: IConfig;
 
-  InstanceHomepageSorting = InstanceHomepageSorting;
-
   RouteName = RouteName;
 
   currentUserParticipations: IParticipant[] = [];
diff --git a/lib/graphql/resolvers/config.ex b/lib/graphql/resolvers/config.ex
index 13ba16a40..af9bded83 100644
--- a/lib/graphql/resolvers/config.ex
+++ b/lib/graphql/resolvers/config.ex
@@ -89,7 +89,6 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do
       name: Config.instance_name(),
       registrations_open: Config.instance_registrations_open?(),
       registrations_allowlist: Config.instance_registrations_allowlist?(),
-      instance_homepage_sorting: Config.instance_homepage_sorting(),
       contact: Config.contact(),
       demo_mode: Config.instance_demo_mode?(),
       description: Config.instance_description(),
diff --git a/lib/graphql/schema/admin.ex b/lib/graphql/schema/admin.ex
index 4db30413e..ad3332dc2 100644
--- a/lib/graphql/schema/admin.ex
+++ b/lib/graphql/schema/admin.ex
@@ -393,10 +393,10 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
       arg(:instance_long_description, :string, description: "The instance's long description")
       arg(:instance_slogan, :string, description: "The instance's slogan")
       arg(:contact, :string, description: "The instance's contact details")
-      arg(:instance_homepage_sorting, :instance_homepage_sorting, description: "The instance's homepage sorting")
       arg(:instance_terms, :string, description: "The instance's terms body text")
       arg(:instance_terms_type, :instance_terms_type, description: "The instance's terms type")
       arg(:instance_terms_url, :string, description: "The instance's terms URL")
+      arg(:instance_homepage_sorting, :instance_homepage_sorting, description: "The instance's homepage sorting")
 
       arg(:instance_privacy_policy, :string,
         description: "The instance's privacy policy body text"
diff --git a/lib/graphql/schema/config.ex b/lib/graphql/schema/config.ex
index 5c2f5d3ba..3d690bb92 100644
--- a/lib/graphql/schema/config.ex
+++ b/lib/graphql/schema/config.ex
@@ -48,8 +48,6 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do
     field(:version, :string, description: "The instance's version")
     field(:federating, :boolean, description: "Whether this instance is federation")
 
-    field(:instance_homepage_sorting, :instance_homepage_sorting, description: "The instance's homepage sorting")
-
     field(:terms, :terms, description: "The instance's terms") do
       arg(:locale, :string,
         default_value: "en",
@@ -60,6 +58,8 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do
       resolve(&Config.terms/3)
     end
 
+    field(:instance_homepage_sorting, :instance_homepage_sorting, description: "The instance's homepage sorting")
+
     field(:privacy, :privacy, description: "The instance's privacy policy") do
       arg(:locale, :string,
         default_value: "en",
diff --git a/lib/mobilizon/config.ex b/lib/mobilizon/config.ex
index 1611adf98..196fdb968 100644
--- a/lib/mobilizon/config.ex
+++ b/lib/mobilizon/config.ex
@@ -411,10 +411,10 @@ defmodule Mobilizon.Config do
       instance_slogan: instance_slogan(),
       registrations_open: instance_registrations_open?(),
       contact: contact(),
-      instance_homepage_sorting: instance_homepage_sorting(),
       instance_terms: instance_terms(),
       instance_terms_type: instance_terms_type(),
       instance_terms_url: instance_terms_url(),
+      instance_homepage_sorting: instance_homepage_sorting(),
       instance_privacy_policy: instance_privacy(),
       instance_privacy_policy_type: instance_privacy_type(),
       instance_privacy_policy_url: instance_privacy_url(),
diff --git a/schema.graphql b/schema.graphql
index 14e0ffe55..c3fc01259 100644
--- a/schema.graphql
+++ b/schema.graphql
@@ -223,15 +223,15 @@ type Config {
   "Whether this instance is federation"
   federating: Boolean
 
-  "The instance's homepage sorting"
-  instanceHomepageSorting: InstanceHomepageSorting
-
   "The instance's terms"
   terms(
     "The user's locale. The terms will be translated in their language, if available."
     locale: String
   ): Terms
 
+  "The instance's homepage sorting"
+  instanceHomepageSorting: InstanceHomepageSorting
+
   "The instance's privacy policy"
   privacy(
     "The user's locale. The privacy policy will be translated in their language, if available."
@@ -1953,9 +1953,6 @@ type RootMutationType {
     "The instance's contact details"
     contact: String
 
-    "The instance's homepage sorting"
-    instanceHomepageSorting: InstanceHomepageSorting
-
     "The instance's terms body text"
     instanceTerms: String
 
@@ -1965,6 +1962,9 @@ type RootMutationType {
     "The instance's terms URL"
     instanceTermsUrl: String
 
+    "The instance's homepage sorting"
+    instanceHomepageSorting: InstanceHomepageSorting
+
     "The instance's privacy policy body text"
     instancePrivacyPolicy: String
 
diff --git a/test/graphql/resolvers/admin_test.exs b/test/graphql/resolvers/admin_test.exs
index 62cf40965..56c0db5d1 100644
--- a/test/graphql/resolvers/admin_test.exs
+++ b/test/graphql/resolvers/admin_test.exs
@@ -337,7 +337,7 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
     instanceDescription
     instanceLongDescription
     contact
-    instanceHomepageSorting
+    InstanceHomepageSorting
     instanceTerms
     instanceTermsType
     instanceTermsUrl
@@ -420,7 +420,7 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
       $instanceDescription: String
       $instanceLongDescription: String
       $contact: String
-      $instanceHomepageSorting: InstanceHomepageSorting
+      $InstanceHomepageSorting: InstanceHomepageSorting
       $instanceTerms: String
       $instanceTermsType: InstanceTermsType
       $instanceTermsUrl: String
@@ -435,7 +435,7 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
         instanceDescription: $instanceDescription
         instanceLongDescription: $instanceLongDescription
         contact: $contact
-        instanceHomepageSorting: $instanceHomepageSorting
+        InstanceHomepageSorting: $InstanceHomepageSorting
         instanceTerms: $instanceTerms
         instanceTermsType: $instanceTermsType
         instanceTermsUrl: $instanceTermsUrl