WIP BOD-14 changes.
This commit is contained in:
@@ -24,10 +24,12 @@ export default class AppContainer extends Component {
|
|||||||
const wsLink = new WebSocketLink({
|
const wsLink = new WebSocketLink({
|
||||||
uri: process.env.REACT_APP_GRAPHQL_ENDPOINT_WS,
|
uri: process.env.REACT_APP_GRAPHQL_ENDPOINT_WS,
|
||||||
options: {
|
options: {
|
||||||
//lazy: true,
|
lazy: true,
|
||||||
reconnect: true,
|
reconnect: true,
|
||||||
connectionParams: () => {
|
connectionParams: async () => {
|
||||||
const token = localStorage.getItem("token");
|
//const token = localStorage.getItem("token");
|
||||||
|
const token = await auth.currentUser.getIdToken(true);
|
||||||
|
console.log("token", token);
|
||||||
if (token) {
|
if (token) {
|
||||||
return {
|
return {
|
||||||
headers: {
|
headers: {
|
||||||
@@ -40,6 +42,7 @@ export default class AppContainer extends Component {
|
|||||||
});
|
});
|
||||||
const subscriptionMiddleware = {
|
const subscriptionMiddleware = {
|
||||||
applyMiddleware: async (options, next) => {
|
applyMiddleware: async (options, next) => {
|
||||||
|
console.log("SubMiddleware");
|
||||||
options.authToken = await auth.currentUser.getIdToken(true);
|
options.authToken = await auth.currentUser.getIdToken(true);
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,10 @@ import { Avatar, Badge, Col, List, Row } from "antd";
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import { openConversation, toggleChatVisible } from "../../redux/messaging/messaging.actions";
|
import {
|
||||||
|
openConversation,
|
||||||
|
toggleChatVisible
|
||||||
|
} from "../../redux/messaging/messaging.actions";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
//currentUser: selectCurrentUser
|
//currentUser: selectCurrentUser
|
||||||
@@ -29,27 +32,29 @@ export function ChatConversationListComponent({
|
|||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
<Row>
|
<Row>
|
||||||
<List
|
<Col span={24}>
|
||||||
dataSource={conversationList}
|
<List
|
||||||
renderItem={item => (
|
dataSource={conversationList}
|
||||||
<Badge count={item.messages_aggregate.aggregate.count || 0}>
|
renderItem={item => (
|
||||||
<List.Item
|
<Badge count={item.messages_aggregate.aggregate.count || 0}>
|
||||||
key={item.id}
|
<List.Item
|
||||||
style={{ cursor: "pointer" }}
|
key={item.id}
|
||||||
onClick={() =>
|
style={{ cursor: "pointer" }}
|
||||||
openConversation({ phone_num: item.phone_num, id: item.id })
|
onClick={() =>
|
||||||
}>
|
openConversation({ phone_num: item.phone_num, id: item.id })
|
||||||
<List.Item.Meta
|
}>
|
||||||
avatar={
|
<List.Item.Meta
|
||||||
<Avatar src='https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png' />
|
avatar={
|
||||||
}
|
<Avatar src='https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png' />
|
||||||
title={item.phone_num}
|
}
|
||||||
description='Some sort of RO info? '
|
title={item.phone_num}
|
||||||
/>
|
description='Some sort of RO info? '
|
||||||
</List.Item>
|
/>
|
||||||
</Badge>
|
</List.Item>
|
||||||
)}
|
</Badge>
|
||||||
/>
|
)}
|
||||||
|
/>
|
||||||
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
import { auth } from "../firebase/firebase.utils";
|
|
||||||
|
|
||||||
//used to ensure that there is always a fresh token.
|
|
||||||
function minutesSince(date) {
|
|
||||||
const now = new Date();
|
|
||||||
const millisecondsSince = now - date;
|
|
||||||
// Divide milliseconds by 1000 to get seconds
|
|
||||||
// Divide seconds by 60 to get minutes
|
|
||||||
return millisecondsSince / 1000 / 60;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pass a different argument number to set a sooner/longer refresh time
|
|
||||||
export function shouldRefreshToken(minutesBeforeShouldRefresh = 45) {
|
|
||||||
const stringifiedRefreshTime = window.sessionStorage.getItem(
|
|
||||||
`lastTokenRefreshTime`
|
|
||||||
);
|
|
||||||
const lastRefreshAt = new Date(stringifiedRefreshTime);
|
|
||||||
const aboutToExpire =
|
|
||||||
minutesSince(lastRefreshAt) >= minutesBeforeShouldRefresh;
|
|
||||||
return aboutToExpire;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export async function refreshToken() {
|
|
||||||
try {
|
|
||||||
if (auth.user) {
|
|
||||||
const idToken = await auth().currentUser.getIdToken(
|
|
||||||
/* force refresh */ true
|
|
||||||
);
|
|
||||||
const now = new Date();
|
|
||||||
window.localStorage.setItem(`lastTokenRefreshTime`, now);
|
|
||||||
localStorage.setItem("token", idToken);
|
|
||||||
console.log("Token refreshed.");
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -27,8 +27,8 @@ export function* signInWithEmail({ payload: { email, password } }) {
|
|||||||
try {
|
try {
|
||||||
const { user } = yield auth.signInWithEmailAndPassword(email, password);
|
const { user } = yield auth.signInWithEmailAndPassword(email, password);
|
||||||
let token = yield user.getIdToken();
|
let token = yield user.getIdToken();
|
||||||
localStorage.setItem("token", token);
|
// localStorage.setItem("token", token);
|
||||||
window.sessionStorage.setItem(`lastTokenRefreshTime`, new Date());
|
//window.sessionStorage.setItem(`lastTokenRefreshTime`, new Date());
|
||||||
yield put(
|
yield put(
|
||||||
signInSuccess({
|
signInSuccess({
|
||||||
uid: user.uid,
|
uid: user.uid,
|
||||||
@@ -55,8 +55,8 @@ export function* isUserAuthenticated() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let token = yield user.getIdToken();
|
let token = yield user.getIdToken();
|
||||||
localStorage.setItem("token", token);
|
//localStorage.setItem("token", token);
|
||||||
window.sessionStorage.setItem(`lastTokenRefreshTime`, new Date());
|
//window.sessionStorage.setItem(`lastTokenRefreshTime`, new Date());
|
||||||
|
|
||||||
yield put(
|
yield put(
|
||||||
signInSuccess({
|
signInSuccess({
|
||||||
|
|||||||
Reference in New Issue
Block a user