diff --git a/app/javascript/gabsocial/features/compose/containers/search_results_container.js b/app/javascript/gabsocial/features/compose/containers/search_results_container.js
index f9637861..cafe5010 100644
--- a/app/javascript/gabsocial/features/compose/containers/search_results_container.js
+++ b/app/javascript/gabsocial/features/compose/containers/search_results_container.js
@@ -1,6 +1,7 @@
import { connect } from 'react-redux';
import SearchResults from '../components/search_results';
import { fetchSuggestions, dismissSuggestion } from '../../../actions/suggestions';
+import { withRouter } from 'react-router-dom';
const mapStateToProps = state => ({
results: state.getIn(['search', 'results']),
@@ -12,4 +13,4 @@ const mapDispatchToProps = dispatch => ({
dismissSuggestion: account => dispatch(dismissSuggestion(account.get('id'))),
});
-export default connect(mapStateToProps, mapDispatchToProps)(SearchResults);
+export default withRouter(connect(mapStateToProps, mapDispatchToProps)(SearchResults));
diff --git a/app/javascript/gabsocial/features/search/components/header.js b/app/javascript/gabsocial/features/search/components/header.js
index 133e298b..837fb5fd 100644
--- a/app/javascript/gabsocial/features/search/components/header.js
+++ b/app/javascript/gabsocial/features/search/components/header.js
@@ -1,8 +1,7 @@
import React from 'react';
import { connect } from 'react-redux';
-import ImmutablePropTypes from 'react-immutable-proptypes';
+import { withRouter } from 'react-router-dom';
import PropTypes from 'prop-types';
-import ImmutablePureComponent from 'react-immutable-pure-component';
import { FormattedMessage } from 'react-intl';
import { NavLink } from 'react-router-dom';
@@ -11,7 +10,10 @@ const mapStateToProps = state => ({
submitted: state.getIn(['search', 'submitted']),
});
-class Header extends ImmutablePureComponent {
+export default
+@withRouter
+@connect(mapStateToProps)
+class Header extends React.PureComponent {
static propTypes = {
value: PropTypes.string,
@@ -32,10 +34,6 @@ class Header extends ImmutablePureComponent {
render () {
const { submittedValue } = this.state;
- if (!submittedValue) {
- return null;
- }
-
return (
@@ -46,27 +44,22 @@ class Header extends ImmutablePureComponent {
-
+
- {/*
-
-
-
+
-
+
-
+
- */}
+
);
}
-}
-
-export default connect(mapStateToProps)(Header);
+}
\ No newline at end of file
diff --git a/app/javascript/gabsocial/features/ui/index.js b/app/javascript/gabsocial/features/ui/index.js
index d65ba40a..2307ba42 100644
--- a/app/javascript/gabsocial/features/ui/index.js
+++ b/app/javascript/gabsocial/features/ui/index.js
@@ -202,7 +202,10 @@ class SwitchingColumnsArea extends React.PureComponent {
-
+
+
+
+
diff --git a/app/javascript/gabsocial/locales/ast.json b/app/javascript/gabsocial/locales/ast.json
index cf9d67b9..d10e280d 100644
--- a/app/javascript/gabsocial/locales/ast.json
+++ b/app/javascript/gabsocial/locales/ast.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "etiqueta",
"search_popout.tips.status": "estáu",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "usuariu",
"search_results.accounts": "Xente",
"search_results.hashtags": "Etiquetes",
diff --git a/app/javascript/gabsocial/locales/bg.json b/app/javascript/gabsocial/locales/bg.json
index 93e850a7..d9653985 100644
--- a/app/javascript/gabsocial/locales/bg.json
+++ b/app/javascript/gabsocial/locales/bg.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/defaultMessages.json b/app/javascript/gabsocial/locales/defaultMessages.json
index 0bacc9c6..f1c8458a 100644
--- a/app/javascript/gabsocial/locales/defaultMessages.json
+++ b/app/javascript/gabsocial/locales/defaultMessages.json
@@ -1026,7 +1026,7 @@
"id": "search_popout.tips.full_text"
},
{
- "defaultMessage": "Simple text returns matching display names, usernames and hashtags",
+ "defaultMessage": "Simple text returns matching display names, usernames, groups and hashtags",
"id": "search_popout.tips.text"
},
{
diff --git a/app/javascript/gabsocial/locales/en.json b/app/javascript/gabsocial/locales/en.json
index 66365f4b..83d79665 100644
--- a/app/javascript/gabsocial/locales/en.json
+++ b/app/javascript/gabsocial/locales/en.json
@@ -310,7 +310,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favorited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/hi.json b/app/javascript/gabsocial/locales/hi.json
index 3c53a68b..e05f9231 100644
--- a/app/javascript/gabsocial/locales/hi.json
+++ b/app/javascript/gabsocial/locales/hi.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/hr.json b/app/javascript/gabsocial/locales/hr.json
index 677e6d29..454818af 100644
--- a/app/javascript/gabsocial/locales/hr.json
+++ b/app/javascript/gabsocial/locales/hr.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/hu.json b/app/javascript/gabsocial/locales/hu.json
index 1fc83213..3209d308 100644
--- a/app/javascript/gabsocial/locales/hu.json
+++ b/app/javascript/gabsocial/locales/hu.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "felhasználó",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/id.json b/app/javascript/gabsocial/locales/id.json
index e9c99f53..c2739efe 100644
--- a/app/javascript/gabsocial/locales/id.json
+++ b/app/javascript/gabsocial/locales/id.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "tagar",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/io.json b/app/javascript/gabsocial/locales/io.json
index ca9d7091..ff294b9e 100644
--- a/app/javascript/gabsocial/locales/io.json
+++ b/app/javascript/gabsocial/locales/io.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/lv.json b/app/javascript/gabsocial/locales/lv.json
index 55ec186c..49d00b0c 100644
--- a/app/javascript/gabsocial/locales/lv.json
+++ b/app/javascript/gabsocial/locales/lv.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/ms.json b/app/javascript/gabsocial/locales/ms.json
index 4b0adf09..bc1d883c 100644
--- a/app/javascript/gabsocial/locales/ms.json
+++ b/app/javascript/gabsocial/locales/ms.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/sl.json b/app/javascript/gabsocial/locales/sl.json
index dcd88c14..6d7ee45c 100644
--- a/app/javascript/gabsocial/locales/sl.json
+++ b/app/javascript/gabsocial/locales/sl.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/ta.json b/app/javascript/gabsocial/locales/ta.json
index bf26aaf7..6813c439 100644
--- a/app/javascript/gabsocial/locales/ta.json
+++ b/app/javascript/gabsocial/locales/ta.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/locales/th.json b/app/javascript/gabsocial/locales/th.json
index 268d0a7a..5fbbba05 100644
--- a/app/javascript/gabsocial/locales/th.json
+++ b/app/javascript/gabsocial/locales/th.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "แฮชแท็ก",
"search_popout.tips.status": "สถานะ",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "ผู้ใช้",
"search_results.accounts": "ผู้คน",
"search_results.hashtags": "แฮชแท็ก",
diff --git a/app/javascript/gabsocial/locales/tr.json b/app/javascript/gabsocial/locales/tr.json
index e6585083..c03f2411 100644
--- a/app/javascript/gabsocial/locales/tr.json
+++ b/app/javascript/gabsocial/locales/tr.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "durum",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "kullanıcı",
"search_results.accounts": "İnsanlar",
"search_results.hashtags": "Hashtagler",
diff --git a/app/javascript/gabsocial/locales/uk.json b/app/javascript/gabsocial/locales/uk.json
index d4d61042..f97cc36f 100644
--- a/app/javascript/gabsocial/locales/uk.json
+++ b/app/javascript/gabsocial/locales/uk.json
@@ -307,7 +307,7 @@
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, reposted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames, groups and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
diff --git a/app/javascript/gabsocial/reducers/search.js b/app/javascript/gabsocial/reducers/search.js
index ec3191de..163b47a8 100644
--- a/app/javascript/gabsocial/reducers/search.js
+++ b/app/javascript/gabsocial/reducers/search.js
@@ -43,6 +43,7 @@ export default function search(state = initialState, action) {
accounts: ImmutableList(action.results.accounts.map(item => item.id)),
statuses: ImmutableList(action.results.statuses.map(item => item.id)),
hashtags: fromJS(action.results.hashtags),
+ groups: fromJS(action.results.groups),
})).set('submitted', true);
default:
return state;
diff --git a/app/javascript/styles/gabsocial/components.scss b/app/javascript/styles/gabsocial/components.scss
index fd83909d..ddf7ad9b 100644
--- a/app/javascript/styles/gabsocial/components.scss
+++ b/app/javascript/styles/gabsocial/components.scss
@@ -4625,14 +4625,20 @@ noscript {
text-overflow: ellipsis;
white-space: nowrap;
+ span {
+ text-decoration: none;
+ }
+
strong {
- font-weight: 500;
+ color: $primary-text-color;
+ font-weight: 600;
+ text-decoration: none;
}
a {
color: $darker-text-color;
text-decoration: none;
- font-size: 14px;
+ font-size: 16px;
font-weight: 500;
display: block;
overflow: hidden;
@@ -5198,6 +5204,7 @@ noscript {
white-space: nowrap;
max-width: 1200px;
margin: 0 auto;
+ height: 32px;
}
&__type-filters-tabs {
diff --git a/app/models/group.rb b/app/models/group.rb
index 1b03b569..c13519cd 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -43,6 +43,17 @@ class Group < ApplicationRecord
before_destroy :clean_feed_manager
after_create :add_owner_to_accounts
+ class << self
+ def search_for(term, limit = 100, offset = 0)
+ pattern = sanitize_sql_like(term.strip) + '%'
+
+ Group.where('lower(title) like lower(?) AND is_archived=false', pattern)
+ .order(:title)
+ .limit(limit)
+ .offset(offset)
+ end
+ end
+
private
def add_owner_to_accounts
diff --git a/app/models/search.rb b/app/models/search.rb
index 676c2a7f..fe5e1eb1 100644
--- a/app/models/search.rb
+++ b/app/models/search.rb
@@ -1,5 +1,5 @@
# frozen_string_literal: true
class Search < ActiveModelSerializers::Model
- attributes :accounts, :statuses, :hashtags
+ attributes :accounts, :statuses, :hashtags, :groups
end
diff --git a/app/serializers/rest/search_serializer.rb b/app/serializers/rest/search_serializer.rb
index 157f543a..769b0700 100644
--- a/app/serializers/rest/search_serializer.rb
+++ b/app/serializers/rest/search_serializer.rb
@@ -5,6 +5,7 @@ class REST::SearchSerializer < ActiveModel::Serializer
has_many :accounts, serializer: REST::AccountSerializer
has_many :statuses, serializer: REST::StatusSerializer
+ has_many :groups, serializer: REST::GroupSerializer
def hashtags
object.hashtags.map(&:name)
diff --git a/app/serializers/rest/v2/search_serializer.rb b/app/serializers/rest/v2/search_serializer.rb
index cdb6b3a5..61c531ea 100644
--- a/app/serializers/rest/v2/search_serializer.rb
+++ b/app/serializers/rest/v2/search_serializer.rb
@@ -4,4 +4,5 @@ class REST::V2::SearchSerializer < ActiveModel::Serializer
has_many :accounts, serializer: REST::AccountSerializer
has_many :statuses, serializer: REST::StatusSerializer
has_many :hashtags, serializer: REST::TagSerializer
+ has_many :groups, serializer: REST::GroupSerializer
end
diff --git a/app/services/search_service.rb b/app/services/search_service.rb
index e0da61da..50bd0543 100644
--- a/app/services/search_service.rb
+++ b/app/services/search_service.rb
@@ -16,6 +16,7 @@ class SearchService < BaseService
results[:accounts] = perform_accounts_search! if account_searchable?
results[:statuses] = perform_statuses_search! if full_text_searchable?
results[:hashtags] = perform_hashtags_search! if hashtag_searchable?
+ results[:groups] = perform_groups_search!
end
end
end
@@ -32,6 +33,14 @@ class SearchService < BaseService
)
end
+ def perform_groups_search!
+ Group.search_for(
+ @query.gsub(/\A#/, ''),
+ @limit,
+ @offset
+ )
+ end
+
def perform_statuses_search!
definition = StatusesIndex.filter(term: { searchable_by: @account.id })
.query(multi_match: { type: 'most_fields', query: @query, operator: 'and', fields: %w(text text.stemmed) })