From 5390288572ce122c6778b966ad1d92d700087fbb Mon Sep 17 00:00:00 2001 From: nanaya Date: Wed, 25 Sep 2024 18:49:44 +0900 Subject: [PATCH] Remove redundant user card endpoint --- app/Http/Controllers/UsersController.php | 13 ------ app/Models/UserNotFound.php | 41 ------------------- resources/js/components/user-card-tooltip.tsx | 17 ++------ resources/js/models/user.ts | 13 +++--- resources/js/store/store-supporter-tag.tsx | 7 +--- routes/web.php | 1 - 6 files changed, 12 insertions(+), 80 deletions(-) delete mode 100644 app/Models/UserNotFound.php diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index 5ca585267f1..e289b1ce689 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -6,7 +6,6 @@ namespace App\Http\Controllers; use App\Exceptions\ModelNotSavedException; -use App\Exceptions\UserProfilePageLookupException; use App\Exceptions\ValidationException; use App\Http\Middleware\RequestCost; use App\Libraries\ClientCheck; @@ -24,7 +23,6 @@ use App\Models\Solo\Score as SoloScore; use App\Models\User; use App\Models\UserAccountHistory; -use App\Models\UserNotFound; use App\Transformers\CurrentUserTransformer; use App\Transformers\ScoreTransformer; use App\Transformers\UserCompactTransformer; @@ -114,17 +112,6 @@ private static function storeClientDisabledError() ], 403); } - public function card($id) - { - try { - $user = FindForProfilePage::find($id, null, false); - } catch (UserProfilePageLookupException $e) { - $user = UserNotFound::instance(); - } - - return json_item($user, 'UserCompact', UserCompactTransformer::CARD_INCLUDES); - } - public function create() { if (!$GLOBALS['cfg']['osu']['user']['registration_mode']['web']) { diff --git a/app/Models/UserNotFound.php b/app/Models/UserNotFound.php deleted file mode 100644 index 985df2a53ca..00000000000 --- a/app/Models/UserNotFound.php +++ /dev/null @@ -1,41 +0,0 @@ -. Licensed under the GNU Affero General Public License v3.0. -// See the LICENCE file in the repository root for full licence text. - -namespace App\Models; - -class UserNotFound extends User -{ - public static function instance() - { - static $user; - - return $user ??= new static(['user_id' => -1, 'username' => '']); - } - - public function checkPassword($password) - { - // password check should always fail. - return false; - } - - public function getAttribute($key) - { - return match ($key) { - 'username' => osu_trans('supporter_tag.user_search.not_found'), - default => parent::getAttribute($key), - }; - } - - public function isValid() - { - return false; - } - - public function save(array $options = []) - { - // not saveable. - return false; - } -} diff --git a/resources/js/components/user-card-tooltip.tsx b/resources/js/components/user-card-tooltip.tsx index 46ebbeb0e16..1e462657045 100644 --- a/resources/js/components/user-card-tooltip.tsx +++ b/resources/js/components/user-card-tooltip.tsx @@ -3,8 +3,8 @@ import Reportable from 'interfaces/reportable'; import UserJson from 'interfaces/user-json'; -import { route } from 'laroute'; import * as _ from 'lodash'; +import { userNotFoundJson } from 'models/user'; import core from 'osu-core-singleton'; import * as React from 'react'; import { unmountComponentAtNode } from 'react-dom'; @@ -12,6 +12,7 @@ import { renderToStaticMarkup } from 'react-dom/server'; import { activeKeyDidChange as contextActiveKeyDidChange, ContainerContext, KeyContext, State as ActiveKeyState } from 'stateful-activation-context'; import { TooltipContext } from 'tooltip-context'; import { presence } from 'utils/string'; +import { apiLookupUsers } from 'utils/user'; import { UserCard } from './user-card'; interface Props { @@ -224,21 +225,11 @@ export class UserCardTooltip extends React.PureComponent { } componentDidMount() { - this.getUser().then((user) => { - this.setState({ user }); + apiLookupUsers([this.props.lookup]).done((response) => { + this.setState({ user: response.users[0] ?? userNotFoundJson }); }); } - getUser() { - const url = route('users.card', { user: this.props.lookup }); - - return $.ajax({ - dataType: 'json', - type: 'GET', - url, - }) as JQuery.jqXHR; - } - render() { const activated = this.state.activeKey === this.props.lookup; diff --git a/resources/js/models/user.ts b/resources/js/models/user.ts index f46abe9a470..047e1c6c8de 100644 --- a/resources/js/models/user.ts +++ b/resources/js/models/user.ts @@ -82,14 +82,15 @@ export default class User { } } -const deletedUser = new User(-1); +export const deletedUser = new User(-1); deletedUser.isDeleted = true; deletedUser.username = trans('users.deleted'); Object.freeze(deletedUser); -const deletedUserJson = Object.freeze(deletedUser.toJson()); +export const deletedUserJson = Object.freeze(deletedUser.toJson()); -export { - deletedUser, - deletedUserJson, -}; +const userNotFound = new User(-1); +userNotFound.username = trans('supporter_tag.user_search.not_found'); +Object.freeze(userNotFound); + +export const userNotFoundJson = Object.freeze(userNotFound.toJson()); diff --git a/resources/js/store/store-supporter-tag.tsx b/resources/js/store/store-supporter-tag.tsx index c9013bbd55e..36c96e8d21c 100644 --- a/resources/js/store/store-supporter-tag.tsx +++ b/resources/js/store/store-supporter-tag.tsx @@ -6,7 +6,7 @@ import UserJson from 'interfaces/user-json'; import { debounce } from 'lodash'; import { action, autorun, computed, makeObservable, observable, runInAction } from 'mobx'; import { disposeOnUnmount, observer } from 'mobx-react'; -import User from 'models/user'; +import { userNotFoundJson } from 'models/user'; import core from 'osu-core-singleton'; import React from 'react'; import { onError } from 'utils/ajax'; @@ -22,11 +22,6 @@ const jsonId = 'json-store-supporter-tag'; const maxValue = 52; const minValue = 4; -const userNotFound = new User(-1); -userNotFound.username = trans('supporter_tag.user_search.not_found'); - -const userNotFoundJson = Object.freeze(userNotFound.toJson()); - interface Props { maxMessageLength: number; } diff --git a/routes/web.php b/routes/web.php index 3e1220f7e96..a49fcf07594 100644 --- a/routes/web.php +++ b/routes/web.php @@ -302,7 +302,6 @@ Route::post('users/store-web', 'UsersController@storeWeb')->name('users.store-web'); Route::group(['as' => 'users.', 'prefix' => 'users/{user}'], function () { - Route::get('card', 'UsersController@card')->name('card'); Route::get('extra-pages/{page}', 'UsersController@extraPages')->name('extra-page'); Route::put('page', 'UsersController@updatePage')->name('page'); Route::group(['namespace' => 'Users'], function () {