diff --git a/apps/portal/src/components/questions/ContributeQuestionForm.tsx b/apps/portal/src/components/questions/ContributeQuestionForm.tsx
index 363cc987..73cca0fc 100644
--- a/apps/portal/src/components/questions/ContributeQuestionForm.tsx
+++ b/apps/portal/src/components/questions/ContributeQuestionForm.tsx
@@ -1,7 +1,6 @@
import { startOfMonth } from 'date-fns';
import { useState } from 'react';
import { Controller, useForm } from 'react-hook-form';
-import { CalendarDaysIcon, UserIcon } from '@heroicons/react/24/outline';
import type { QuestionsQuestionType } from '@prisma/client';
import {
Button,
@@ -9,10 +8,10 @@ import {
HorizontalDivider,
Select,
TextArea,
- TextInput,
+ Typeahead,
} from '@tih/ui';
-import { QUESTION_TYPES } from '~/utils/questions/constants';
+import { LOCATIONS, QUESTION_TYPES, ROLES } from '~/utils/questions/constants';
import {
useFormRegister,
useSelectRegister,
@@ -83,12 +82,25 @@ export default function ContributeQuestionForm({
- (
+ {}}
+ onSelect={(option) => {
+ field.onChange(option.value);
+ }}
+ {...field}
+ value={LOCATIONS.find(
+ (location) => location.value === field.value,
+ )}
+ />
+ )}
/>
@@ -97,10 +109,12 @@ export default function ContributeQuestionForm({
name="date"
render={({ field }) => (
field.onChange(startOfMonth(new Date(year, month - 1)))
}
@@ -124,12 +138,23 @@ export default function ContributeQuestionForm({
/>
- (
+ {}}
+ onSelect={(option) => {
+ field.onChange(option.value);
+ }}
+ {...field}
+ value={ROLES.find((role) => role.value === field.value)}
+ />
+ )}
/>
diff --git a/apps/portal/src/pages/questions/index.tsx b/apps/portal/src/pages/questions/index.tsx
index f374553d..5f74c523 100644
--- a/apps/portal/src/pages/questions/index.tsx
+++ b/apps/portal/src/pages/questions/index.tsx
@@ -38,7 +38,12 @@ export default function QuestionsHomePage() {
areQuestionTypesInitialized,
] = useSearchFilter('questionTypes', {
queryParamToValue: (param) => {
- return param.toUpperCase() as QuestionsQuestionType;
+ const uppercaseParam = param.toUpperCase();
+ return (
+ QUESTION_TYPES.find(
+ (questionType) => questionType.value.toUpperCase() === uppercaseParam,
+ )?.value ?? null
+ );
},
});
const [
@@ -47,6 +52,14 @@ export default function QuestionsHomePage() {
isQuestionAgeInitialized,
] = useSearchFilterSingle('questionAge', {
defaultValue: 'all',
+ queryParamToValue: (param) => {
+ const uppercaseParam = param.toUpperCase();
+ return (
+ QUESTION_AGES.find(
+ (questionAge) => questionAge.value.toUpperCase() === uppercaseParam,
+ )?.value ?? null
+ );
+ },
});
const [selectedRoles, setSelectedRoles, areRolesInitialized] =
diff --git a/apps/portal/src/server/router/questions-question-router.ts b/apps/portal/src/server/router/questions-question-router.ts
index 75fb7d17..b7396a8d 100644
--- a/apps/portal/src/server/router/questions-question-router.ts
+++ b/apps/portal/src/server/router/questions-question-router.ts
@@ -80,6 +80,8 @@ export const questionsQuestionRouter = createProtectedRouter()
},
},
});
+
+ console.log(input);
return questionsData.map((data) => {
const votes: number = data.votes.reduce(
(previousValue: number, currentValue) => {
diff --git a/apps/portal/src/utils/questions/constants.ts b/apps/portal/src/utils/questions/constants.ts
index 2f44db06..d67fbcf4 100644
--- a/apps/portal/src/utils/questions/constants.ts
+++ b/apps/portal/src/utils/questions/constants.ts
@@ -76,7 +76,7 @@ export const LOCATIONS: FilterChoices = [
value: 'california',
},
{
- id: 'california',
+ id: 'Hong Kong',
label: 'Hong Kong',
value: 'Hong Kong',
},
diff --git a/apps/portal/src/utils/questions/useSearchFilter.ts b/apps/portal/src/utils/questions/useSearchFilter.ts
index 0b916261..f16d8a65 100644
--- a/apps/portal/src/utils/questions/useSearchFilter.ts
+++ b/apps/portal/src/utils/questions/useSearchFilter.ts
@@ -5,7 +5,7 @@ export const useSearchFilter = (
name: string,
opts: {
defaultValues?: Array;
- queryParamToValue?: (param: string) => Value;
+ queryParamToValue?: (param: string) => Value | null;
} = {},
) => {
const { defaultValues, queryParamToValue = (param) => param } = opts;
@@ -20,7 +20,11 @@ export const useSearchFilter = (
const query = router.query[name];
if (query) {
const queryValues = Array.isArray(query) ? query : [query];
- setFilters(queryValues.map(queryParamToValue) as Array);
+ setFilters(
+ queryValues
+ .map(queryParamToValue)
+ .filter((value) => value !== null) as Array,
+ );
} else {
// Try to load from local storage
const localStorageValue = localStorage.getItem(name);
@@ -48,7 +52,7 @@ export const useSearchFilterSingle = (
name: string,
opts: {
defaultValue?: Value;
- queryParamToValue?: (param: string) => Value;
+ queryParamToValue?: (param: string) => Value | null;
} = {},
) => {
const { defaultValue, queryParamToValue } = opts;