Make login experience smoother
This commit is contained in:
parent
93562425a6
commit
8994427c42
6 changed files with 36 additions and 25 deletions
|
@ -121,13 +121,10 @@ function getDataTypeFromQuery(type?: string): DataType {
|
|||
}
|
||||
|
||||
function getListingTypeFromQuery(type?: string): ListingType {
|
||||
console.log(`Listing type: ${type}`);
|
||||
const myListingType =
|
||||
UserService.Instance.myUserInfo?.local_user_view?.local_user
|
||||
?.default_listing_type;
|
||||
|
||||
console.log(`my listing type: ${myListingType}`);
|
||||
|
||||
return (type ? (type as ListingType) : myListingType) ?? "Local";
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ import { GetSiteResponse, LoginResponse } from "lemmy-js-client";
|
|||
import { i18n } from "../../i18next";
|
||||
import { UserService } from "../../services";
|
||||
import { HttpService, RequestState } from "../../services/HttpService";
|
||||
import { isBrowser, setIsoData, toast, validEmail } from "../../utils";
|
||||
import { isBrowser, myAuth, setIsoData, toast, validEmail } from "../../utils";
|
||||
import { HtmlTags } from "../common/html-tags";
|
||||
import { Spinner } from "../common/icon";
|
||||
|
||||
|
@ -178,8 +178,16 @@ export class Login extends Component<any, State> {
|
|||
|
||||
case "success": {
|
||||
UserService.Instance.login(loginRes.data);
|
||||
i.props.history.push("/");
|
||||
location.reload();
|
||||
const site = await HttpService.client.getSite({
|
||||
auth: myAuth(),
|
||||
});
|
||||
|
||||
if (site.state === "success") {
|
||||
UserService.Instance.myUserInfo = site.data.my_user;
|
||||
}
|
||||
|
||||
i.props.history.replace("/");
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import {
|
|||
isBrowser,
|
||||
joinLemmyUrl,
|
||||
mdToHtml,
|
||||
myAuth,
|
||||
setIsoData,
|
||||
toast,
|
||||
validEmail,
|
||||
|
@ -471,8 +472,14 @@ export class Signup extends Component<any, State> {
|
|||
// Only log them in if a jwt was set
|
||||
if (data.jwt) {
|
||||
UserService.Instance.login(data);
|
||||
i.props.history.push("/communities");
|
||||
location.reload();
|
||||
|
||||
const site = await HttpService.client.getSite({ auth: myAuth() });
|
||||
|
||||
if (site.state === "success") {
|
||||
UserService.Instance.myUserInfo = site.data.my_user;
|
||||
}
|
||||
|
||||
i.props.history.replace("/communities");
|
||||
} else {
|
||||
if (data.verify_email_sent) {
|
||||
toast(i18n.t("verify_email_sent"));
|
||||
|
|
|
@ -3,7 +3,7 @@ import { GetSiteResponse, LoginResponse } from "lemmy-js-client";
|
|||
import { i18n } from "../../i18next";
|
||||
import { HttpService, UserService } from "../../services";
|
||||
import { RequestState } from "../../services/HttpService";
|
||||
import { capitalizeFirstLetter, setIsoData } from "../../utils";
|
||||
import { capitalizeFirstLetter, myAuth, setIsoData } from "../../utils";
|
||||
import { HtmlTags } from "../common/html-tags";
|
||||
import { Spinner } from "../common/icon";
|
||||
|
||||
|
@ -131,11 +131,16 @@ export class PasswordChange extends Component<any, State> {
|
|||
}),
|
||||
});
|
||||
|
||||
if (i.state.passwordChangeRes.state == "success") {
|
||||
if (i.state.passwordChangeRes.state === "success") {
|
||||
const data = i.state.passwordChangeRes.data;
|
||||
UserService.Instance.login(data);
|
||||
this.props.history.push("/");
|
||||
location.reload();
|
||||
|
||||
const site = await HttpService.client.getSite({ auth: myAuth() });
|
||||
if (site.state === "success") {
|
||||
UserService.Instance.myUserInfo = site.data.my_user;
|
||||
}
|
||||
|
||||
this.props.history.replace("/");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -273,16 +273,10 @@ export class Post extends Component<any, PostState> {
|
|||
document.addEventListener("scroll", this.commentScrollDebounced);
|
||||
}
|
||||
|
||||
componentDidUpdate(_lastProps: any) {
|
||||
async componentDidUpdate(_lastProps: any) {
|
||||
// Necessary if you are on a post and you click another post (same route)
|
||||
if (_lastProps.location.pathname !== _lastProps.history.location.pathname) {
|
||||
// TODO Couldnt get a refresh working. This does for now.
|
||||
location.reload();
|
||||
|
||||
// const currentId = this.props.match.params.id;
|
||||
// WebSocketService.Instance.getPost(currentId);
|
||||
// this.context.refresh();
|
||||
// this.context.router.history.push(_lastProps.location.pathname);
|
||||
await this.fetchPost();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,12 +18,12 @@ interface JwtInfo {
|
|||
}
|
||||
|
||||
export class UserService {
|
||||
private static _instance: UserService;
|
||||
static #instance: UserService;
|
||||
public myUserInfo?: MyUserInfo;
|
||||
public jwtInfo?: JwtInfo;
|
||||
|
||||
private constructor() {
|
||||
this.setJwtInfo();
|
||||
this.#setJwtInfo();
|
||||
}
|
||||
|
||||
public login(res: LoginResponse) {
|
||||
|
@ -32,7 +32,7 @@ export class UserService {
|
|||
if (res.jwt) {
|
||||
toast(i18n.t("logged_in"));
|
||||
IsomorphicCookie.save("jwt", res.jwt, { expires, secure: isHttps() });
|
||||
this.setJwtInfo();
|
||||
this.#setJwtInfo();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ export class UserService {
|
|||
}
|
||||
}
|
||||
|
||||
private setJwtInfo() {
|
||||
#setJwtInfo() {
|
||||
const jwt: string | undefined = IsomorphicCookie.load("jwt");
|
||||
|
||||
if (jwt) {
|
||||
|
@ -72,6 +72,6 @@ export class UserService {
|
|||
}
|
||||
|
||||
public static get Instance() {
|
||||
return this._instance || (this._instance = new this());
|
||||
return this.#instance || (this.#instance = new this());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue