Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. import React, { Component } from 'react'
  2. import axios from 'axios'
  3. import socketIOClient from "socket.io-client";
  4. import config from '../config/config'
  5.  
  6. export const myContext = React.createContext();
  7.  
  8. export default class AuthenticationProvider extends Component {
  9.  
  10. state = {
  11. data: []
  12. }
  13.  
  14. async componentDidMount() {
  15. const auth_token = localStorage.getItem('jwt token')
  16. const header = 'Bearer ' + auth_token;
  17. const res = await axios.get(config.API_URL+'/api/account', {headers: {Authorization:header}});
  18. const blob = await axios.get(config.API_URL+'/' + res.data.image, {headers: {Authorization:header}, responseType: "blob"});
  19. var user = res.data;
  20. user["image"] = URL.createObjectURL(blob.data);
  21.  
  22. this.setState({
  23. data: {user}
  24. });
  25.  
  26. const io = socketIOClient(config.REDIS_URL, { query: {jwt: localStorage.getItem('jwt token')} });
  27.  
  28. io.on("event", data => {
  29. if (data !== this.state.notifications){
  30. var curr_data = this.state.data;
  31. curr_data["notifications"] = data;
  32. this.setState({data: curr_data});
  33. }
  34. });
  35.  
  36. io.on("reconnect", () => {
  37. io.emit("jwt", localStorage.getItem('jwt token'));
  38. })
  39. }
  40.  
  41.  
  42. render() {
  43. return (
  44. <myContext.Provider value={this.state.data}>
  45. {this.props.children}
  46. </myContext.Provider>
  47. )
  48. }
  49. }
  50.  
  51. <AccountProvider>
  52. <Route
  53. path="/dashboard"
  54. render={({ match: { url } }) => (
  55. <Dashboard>
  56. <Switch>
  57. <Route path={`${url}/Account`} component={Account} exact />
  58. <Route path={`${url}/Deposits`} component={Deposits} exact />
  59. <Route path={`${url}/Notifications`} component={Client} exact />
  60. <Route path={`${url}/`} component={Account} exact /> */}
  61. <Route component={Page404Dashboard} />
  62. </Switch>
  63. </Dashboard>
  64. )}/>
  65. </AccountProvider>
  66.  
  67. import React, { Component } from 'react'
  68. import AccountContent from './AccountContent';
  69. import PendingCard from '../PendingCard';
  70. import {myContext} from '../../../AccountProvider'
  71.  
  72. class Dashboard extends Component {
  73. render() {
  74. // The following should log notifications after AccountProvider rerenders
  75. console.log(this.context.notifications && this.context.notifications);
  76. return (
  77. <>
  78. { this.props.hasCard ? <AccountContent/> : <PendingCard/> }
  79. </>
  80. )
  81. }
  82. }
  83.  
  84. Dashboard.contextType = myContext;
  85. export default Dashboard;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement