From cf666b12c31a9a846a1ddf927db1981c74cb10c3 Mon Sep 17 00:00:00 2001 From: hverlin Date: Wed, 13 May 2020 01:05:34 +0200 Subject: [PATCH] Add sort option for slack --- src/components/configuration-form.js | 33 +++++++++++++++++++--------- src/configuration-schema.json | 12 +++++++++- src/modules/slack/index.js | 6 +++-- src/modules/slack/settings.js | 2 +- 4 files changed, 39 insertions(+), 14 deletions(-) diff --git a/src/components/configuration-form.js b/src/components/configuration-form.js index ec6866a..de2e23d 100644 --- a/src/components/configuration-form.js +++ b/src/components/configuration-form.js @@ -1,5 +1,5 @@ import React from "react"; -import { FormGroup, InputGroup, NumericInput, Switch } from "@blueprintjs/core"; +import { FormGroup, HTMLSelect, InputGroup, NumericInput, Switch } from "@blueprintjs/core"; import { useStateLink } from "@hookstate/core"; import _ from "lodash"; import configurationSchema from "../configuration-schema.json"; @@ -29,14 +29,25 @@ export default function ConfigurationForm({ configuration, fields = [], isForm = /> ); } else if (fieldSchema.type === "string") { - return ( - state.nested[fieldId].set(e.target.value)} - /> - ); + if (fieldSchema.enum) { + return ( + state.nested[fieldId].set(e.target.value)} + /> + ); + } else { + return ( + state.nested[fieldId].set(e.target.value)} + /> + ); + } } else if (fieldSchema.type === "integer") { return ( {getInputForType(fieldId, inputId, fieldSchema)} diff --git a/src/configuration-schema.json b/src/configuration-schema.json index 278a635..4f81eb2 100644 --- a/src/configuration-schema.json +++ b/src/configuration-schema.json @@ -351,7 +351,7 @@ }, { "type": "object", - "required": ["moduleType", "enabled", "id", "name", "token"], + "required": ["moduleType", "enabled", "id", "name", "token", "sortBy"], "additionalProperties": false, "properties": { "moduleType": { @@ -402,6 +402,16 @@ "default": 5, "minimum": 1, "maximum": 50 + }, + "sortBy": { + "title": "Sort results by", + "type": "string", + "default": "score", + "enum": ["score", "timestamp"], + "x-enum-mapping": [ + { "value": "score", "label": "Most relevant" }, + { "value": "timestamp", "label": "Most recent" } + ] } } }, diff --git a/src/modules/slack/index.js b/src/modules/slack/index.js index 075499e..fe58fa5 100644 --- a/src/modules/slack/index.js +++ b/src/modules/slack/index.js @@ -148,7 +148,7 @@ function SlackDetail({ item, users, emojis }) { async function fetchMessages( key, - { input, queryObj, userId, token, pageSize, owner, dateFilter }, + { input, queryObj, sortBy = "score", userId, token, pageSize, owner, dateFilter }, offset = 1 ) { const query = [input]; @@ -171,6 +171,7 @@ async function fetchMessages( token, query: query.join(" "), offset, + sort: sortBy, }); const res = await fetch(`https://slack.com/api/search.messages?${searchParams}`, { @@ -200,7 +201,7 @@ const slackResultsRenderer = (users, emojis) => ({ pages }) => { }; export default function SlackSearchResults({ configuration, searchViewState }) { - const { token, pageSize, userId } = configuration.get(); + const { token, pageSize, userId, sortBy } = configuration.get(); const searchData = searchViewState.get(); const [users, setUsers] = React.useState([]); @@ -225,6 +226,7 @@ export default function SlackSearchResults({ configuration, searchViewState }) { { input: searchData.input, queryObj: searchData.queryObj, + sortBy, token, pageSize, userId, diff --git a/src/modules/slack/settings.js b/src/modules/slack/settings.js index 8ad9ddd..b6949b8 100644 --- a/src/modules/slack/settings.js +++ b/src/modules/slack/settings.js @@ -94,7 +94,7 @@ export default function SlackSettings({ configurationState }) {