From 5e908c5a95a64a4d48e35516723955ac61a15c4d Mon Sep 17 00:00:00 2001
From: Eugen Rochko <eugen@zeonfederated.com>
Date: Fri, 21 Oct 2022 10:06:03 +0200
Subject: [PATCH] Fix case-sensitive look-up for profiles in web UI (#19397)

---
 app/javascript/mastodon/features/account_timeline/index.js | 3 ++-
 app/javascript/mastodon/reducers/accounts_map.js           | 6 ++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js
index bfb5f7c80e..525837c72c 100644
--- a/app/javascript/mastodon/features/account_timeline/index.js
+++ b/app/javascript/mastodon/features/account_timeline/index.js
@@ -19,11 +19,12 @@ import { connectTimeline, disconnectTimeline } from 'mastodon/actions/timelines'
 import LimitedAccountHint from './components/limited_account_hint';
 import { getAccountHidden } from 'mastodon/selectors';
 import { fetchFeaturedTags } from '../../actions/featured_tags';
+import { normalizeForLookup } from 'mastodon/reducers/accounts_map';
 
 const emptyList = ImmutableList();
 
 const mapStateToProps = (state, { params: { acct, id, tagged }, withReplies = false }) => {
-  const accountId = id || state.getIn(['accounts_map', acct]);
+  const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]);
 
   if (!accountId) {
     return {
diff --git a/app/javascript/mastodon/reducers/accounts_map.js b/app/javascript/mastodon/reducers/accounts_map.js
index e0d42e9cd4..53e08c8fbe 100644
--- a/app/javascript/mastodon/reducers/accounts_map.js
+++ b/app/javascript/mastodon/reducers/accounts_map.js
@@ -1,14 +1,16 @@
 import { ACCOUNT_IMPORT, ACCOUNTS_IMPORT } from '../actions/importer';
 import { Map as ImmutableMap } from 'immutable';
 
+export const normalizeForLookup = str => str.toLowerCase();
+
 const initialState = ImmutableMap();
 
 export default function accountsMap(state = initialState, action) {
   switch(action.type) {
   case ACCOUNT_IMPORT:
-    return state.set(action.account.acct, action.account.id);
+    return state.set(normalizeForLookup(action.account.acct), action.account.id);
   case ACCOUNTS_IMPORT:
-    return state.withMutations(map => action.accounts.forEach(account => map.set(account.acct, account.id)));
+    return state.withMutations(map => action.accounts.forEach(account => map.set(normalizeForLookup(account.acct), account.id)));
   default:
     return state;
   }
-- 
GitLab