Gorji 3 years ago
parent 2222c27c62
commit c8ddc578e7
  1. 2
      src/Redux/proxy.js
  2. 36
      src/Redux/reducers/chat.js
  3. 1125
      src/Redux/reducers/message.js
  4. 5
      src/views/Auth/Bio/FirstBio/FirstBio.js
  5. 5
      src/views/Auth/Bio/SecondBio/SecondBio.js
  6. 6
      src/views/Auth/Bio/ThirdBio/ThirdBio.js
  7. 9
      src/views/ChatRoom/Body/Keyboard/index.js
  8. 2
      src/views/ChatRoom/Body/Message/index.js
  9. 27
      src/views/ChatRoom/Body/index.js
  10. 1
      src/views/ChatRoom/Body/index.scss
  11. 2
      src/views/ChatRoom/Info/index.js

@ -1,6 +1,6 @@
import axios from 'axios'; import axios from 'axios';
import { toast } from 'react-toastify'; import { toast } from 'react-toastify';
const baseURL = 'http://localhost:4040/api/v1'; //'https://chatstory.ir/api/v1'; const baseURL = 'https://chatstory.ir/api/v1';
const token = ''; const token = '';
const loginURL = 'user/otp/login'; const loginURL = 'user/otp/login';
const logoutURL = 'user/logout'; const logoutURL = 'user/logout';

@ -1,6 +1,30 @@
const initialState = { const initialState = {
list: [], list: [
info: { users: [] }, {
badge: '1',
description: null,
fileId: null,
id: 1001,
imageUrl: 'https://chatstory.ir/api/v1/file/download/null',
lastMessage: 'سلام',
name: 'شکافنده زمان',
pid: null,
price: 0,
status: 0,
type: 'chatStory',
updatedAt: '2021-04-13T23:42:12.775Z',
username: null,
},
],
info: {
fileId: null,
subTitle: 'آنلاین',
title: 'ساره',
users: [
{ id: 1, name: 'پلیر', displayName: 'پلیر' },
{ id: 2, name: 'ساره', displayName: 'ساره' },
],
},
bio: { bio: {
album: [], album: [],
images: [], images: [],
@ -13,10 +37,10 @@ const initialState = {
export default function chat(state = initialState, action) { export default function chat(state = initialState, action) {
let { type, data } = action; let { type, data } = action;
switch (type) { switch (type) {
case 'chat/list': // case 'chat/list':
return { ...state, list: data }; // return { ...state, list: data };
case 'chat/info': // case 'chat/info':
return { ...state, info: data }; // return { ...state, info: data };
case 'chat/bio': case 'chat/bio':
return { ...state, bio: data }; return { ...state, bio: data };
default: default:

File diff suppressed because it is too large Load Diff

@ -8,9 +8,8 @@ export default class FirstBio extends Component {
<> <>
<img src={bioFirst} style={{ left: '-5%' }} alt="" /> <img src={bioFirst} style={{ left: '-5%' }} alt="" />
<p> <p>
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک " ایما " چیست ؟ جایی پر از ماجراها و اتفاق های عجیب و جذاب. جایی که شما تمام این ماجراها
است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی رو تجربه میکنید.
تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی میباشد.
</p> </p>
<div style={{ position: 'absolute', right: -5 }} onClick={() => this.props.setSection(1)}> <div style={{ position: 'absolute', right: -5 }} onClick={() => this.props.setSection(1)}>
<NavigateNextIcon style={{ color: '#cfcfcf', width: 50, height: 50, fontWeight: 900 }} /> <NavigateNextIcon style={{ color: '#cfcfcf', width: 50, height: 50, fontWeight: 900 }} />

@ -9,9 +9,8 @@ export default class SecondBio extends Component {
<> <>
<img src={bioSecond} style={{ left: '-3%' }} alt="" /> <img src={bioSecond} style={{ left: '-3%' }} alt="" />
<p> <p>
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک تجربه ی این ماجراجویی ها در دل داستان های متنوع، به صورتی هست که خود شما مستقیما در آن نقش
است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی خواهید داشت !
تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی میباشد.
</p> </p>
<div style={{ position: 'absolute', right: -5 }} onClick={() => this.props.setSection(2)}> <div style={{ position: 'absolute', right: -5 }} onClick={() => this.props.setSection(2)}>
<NavigateNextIcon style={{ color: '#cfcfcf', width: 50, height: 50 }} /> <NavigateNextIcon style={{ color: '#cfcfcf', width: 50, height: 50 }} />

@ -9,9 +9,9 @@ export default class SecondBio extends Component {
<> <>
<img src={bioThird} style={{ left: '-2%', top: 10 }} alt="" /> <img src={bioThird} style={{ left: '-2%', top: 10 }} alt="" />
<p> <p>
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک بله! شما نقش خودتان را خواهید داشت، سرنوشت هر ماجرا را شما با انتخاب هایتان رقم خواهید زد.
است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی انگار که نویسنده ی داستانی خود شما باشید، یا کارگردان فیلمی، خودتان باشید. درست مثل زندگی.
تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی میباشد. به دنیای بی انتهای " ایما " خوش آمدید.
</p> </p>
<div style={{ position: 'absolute', left: -5 }} onClick={() => this.props.setSection(1)}> <div style={{ position: 'absolute', left: -5 }} onClick={() => this.props.setSection(1)}>
<NavigateBeforeIcon style={{ color: '#cfcfcf', width: 50, height: 50 }} /> <NavigateBeforeIcon style={{ color: '#cfcfcf', width: 50, height: 50 }} />

@ -2,6 +2,7 @@ import React, { Component } from 'react';
import Carousel from 'react-elastic-carousel'; import Carousel from 'react-elastic-carousel';
import './index.scss'; import './index.scss';
export default function Keyboard({ options, action }) { export default function Keyboard({ options, action }) {
options = options.length ? options : [[{ text: 'اشتباه' }]];
return ( return (
<div className="chat-suggest portrait-slider d-flex flex-column"> <div className="chat-suggest portrait-slider d-flex flex-column">
<Carousel itemsToShow={1} isRTL={true} enableTilt={true} showArrows={false}> <Carousel itemsToShow={1} isRTL={true} enableTilt={true} showArrows={false}>
@ -25,7 +26,13 @@ const Row = ({ row, action }) => {
const KeyboardItem = ({ item, action }) => { const KeyboardItem = ({ item, action }) => {
return ( return (
<div className="chat-suggest__row--item d-flex" onclick={() => action(item)}> <div
className="chat-suggest__row--item d-flex"
style={{ cursor: 'pointer' }}
onClick={() => {
action(item);
}}
>
{item.text} {item.text}
</div> </div>
); );

@ -15,7 +15,7 @@ const types = {
slider: Slider, slider: Slider,
select: Select, select: Select,
multiselect: MultiSelect, multiselect: MultiSelect,
tap: Tap, //tap: Tap,
}; };
export default class Message extends Component { export default class Message extends Component {
render() { render() {

@ -15,6 +15,7 @@ class List extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
messageList: props.messageList.slice(0, 1),
counter: 1, counter: 1,
id: window.location.href.split('/').pop() * 1, id: window.location.href.split('/').pop() * 1,
data: {}, data: {},
@ -27,8 +28,17 @@ class List extends Component {
document: null, document: null,
}; };
} }
addcounter() { addcounter(item) {
this.setState({ counter: this.state.counter + 1 }); let { messageList } = this.state;
const last = messageList.slice(-1)[0] || {};
console.log(item);
if (!item) {
messageList.push(this.props.messageList.find((e) => e.pid == last.id));
} else {
messageList.push(this.props.messageList.find((e) => e.id == item.id));
}
this.setState({ messageList });
} }
start = () => { start = () => {
this.setState({ this.setState({
@ -344,7 +354,8 @@ class List extends Component {
} }
render() { render() {
const { setPage, chatInfo, messageList: msaster, userId } = this.props; //last const { setPage, chatInfo, messageList: msaster, userId } = this.props; //last
const messageList = msaster.slice(0, this.state.counter); const { messageList } = this.state;
// const messageList = msaster.slice(0, this.state.counter);
const last = messageList.slice(-1)[0] || {}; const last = messageList.slice(-1)[0] || {};
const userIdx = this.userIdx || {}; const userIdx = this.userIdx || {};
if (Object.keys(userIdx).length == 0) { if (Object.keys(userIdx).length == 0) {
@ -367,6 +378,9 @@ class List extends Component {
overflowY: this.state.file !== null ? 'hidden' : 'scroll', overflowY: this.state.file !== null ? 'hidden' : 'scroll',
paddingBottom: last.action === 'keyboard' ? 150 : 75, paddingBottom: last.action === 'keyboard' ? 150 : 75,
}} }}
onClick={() => {
if (last.action === 'tap') this.addcounter();
}}
> >
{chatInfo.users && {chatInfo.users &&
messageList.map((message, i) => messageList.map((message, i) =>
@ -434,7 +448,12 @@ class List extends Component {
/> />
) : null} ) : null}
{last.action === 'keyboard' ? ( {last.action === 'keyboard' ? (
<Keyboard options={last.options} addcounter={() => this.addcounter()} /> <Keyboard
options={last.options}
action={(item) => {
this.addcounter(item);
}}
/>
) : null} ) : null}
</div> </div>
<ToastContainer <ToastContainer

@ -31,6 +31,7 @@
border-top-right-radius: 40px; border-top-right-radius: 40px;
position: relative; position: relative;
margin-top: -95px; margin-top: -95px;
margin-bottom: 40px;
&--preview { &--preview {
position: absolute; position: absolute;
bottom: 0px; bottom: 0px;

@ -19,7 +19,7 @@ export default class ChatInfo extends Component {
], ],
name: 'محسن محمدی', name: 'محسن محمدی',
lastAct: '2 دقیقه پیش آنلاین بوده', lastAct: '2 دقیقه پیش آنلاین بوده',
bio: 'لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد ', bio: '" ایما " چیست ؟ جایی پر از ماجراها و اتفاق های عجیب و جذاب. جایی که شما تمام این ماجراها رو تجربه میکنید. ',
}, },
}; };
} }

Loading…
Cancel
Save