mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 10:34:17 +00:00
change new render model
This commit is contained in:
parent
4601515f0c
commit
cdb4d115c1
@ -14,7 +14,7 @@ module.exports={
|
||||
auth_endpoint: "https://api.ragestudio.net/RSA-COMTY/r/auth",
|
||||
new_post: "https://comty.julioworld.club/api/new_post?access_token=",
|
||||
get_config_endpoint: "https://api.ragestudio.net/RSA-COMTY/r/get-site-settings?access_token=",
|
||||
get_userData_endpoint: "https://api.ragestudio.net/RSA-COMTY/r/get-user-data?access_token=",
|
||||
get_userData: "https://api.ragestudio.net/RSA-COMTY/r/get-user-data?access_token=",
|
||||
update_userData_endpoint: "https://api.ragestudio.net/RSA-COMTY/r/update-user-data?access_token=",
|
||||
removeToken: "https://api.ragestudio.net/RSA-COMTY/r/delete-access-token?access_token=",
|
||||
register_endpoint: "https://api.ragestudio.net/RSA-COMTY/r/create-account",
|
||||
|
29
package.json
29
package.json
@ -3,7 +3,7 @@
|
||||
"UUID": "C8mVSr-4nmPp2-pr5Vrz-CU4kg4",
|
||||
"title": "Comty™",
|
||||
"DevBuild": true,
|
||||
"version": "0.3.02",
|
||||
"version": "0.3.09",
|
||||
"stage": "dev-pre",
|
||||
"description": "",
|
||||
"main": "app/main.js",
|
||||
@ -16,19 +16,17 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/compatible": "^1.0.1",
|
||||
"@ant-design/pro-layout": "^5.0.6",
|
||||
"@capacitor/android": "^1.5.2",
|
||||
"@capacitor/cli": "^1.5.2",
|
||||
"@capacitor/core": "^1.5.2",
|
||||
"@lingui/react": "^2.9.1",
|
||||
"@material-ui/core": "^4.9.3",
|
||||
"@material-ui/core": "^4.9.9",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
"antd": "^4.1.0",
|
||||
"antd": "^4.1.1",
|
||||
"axios": "^0.19.2",
|
||||
"bag.js": "0.0.2",
|
||||
"classnames": "^2.2.6",
|
||||
"cryptr": "^6.0.1",
|
||||
"cryptr": "^6.0.2",
|
||||
"dotenv": "^8.2.0",
|
||||
"dva": "2.4.1",
|
||||
"dva-model-extend": "^0.1.2",
|
||||
@ -43,7 +41,6 @@
|
||||
"nprogress": "^0.2.0",
|
||||
"os-utils": "0.0.14",
|
||||
"path-to-regexp": "^6.1.0",
|
||||
"plyr-react": "^2.2.0",
|
||||
"prop-types": "^15.7.2",
|
||||
"radium": "^0.26.0",
|
||||
"react-animations": "^1.0.0",
|
||||
@ -67,7 +64,7 @@
|
||||
"@lingui/babel-preset-react": "^2.9.1",
|
||||
"@lingui/cli": "^2.9.1",
|
||||
"@lingui/loader": "^2.9.1",
|
||||
"@types/react": "^16.9.19",
|
||||
"@types/react": "^16.9.33",
|
||||
"babel-core": "7.0.0-bridge.0",
|
||||
"babel-eslint": "^10.0.3",
|
||||
"babel-plugin-dev-expression": "^0.2.2",
|
||||
@ -77,24 +74,24 @@
|
||||
"cross-env": "^7.0.0",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-config-react-app": "^5.2.0",
|
||||
"eslint-plugin-flowtype": "^4.6.0",
|
||||
"eslint-plugin-import": "^2.20.1",
|
||||
"eslint-plugin-flowtype": "^4.7.0",
|
||||
"eslint-plugin-import": "^2.20.2",
|
||||
"eslint-plugin-jsx-a11y": "^6.2.3",
|
||||
"eslint-plugin-react": "^7.18.3",
|
||||
"husky": "^4.2.3",
|
||||
"husky": "^4.2.4",
|
||||
"less-vars-to-js": "^1.3.0",
|
||||
"lint-staged": "^10.0.7",
|
||||
"lint-staged": "^10.1.3",
|
||||
"module": "^1.2.5",
|
||||
"now": "^17.0.3",
|
||||
"prettier": "^1.19.1",
|
||||
"rimraf": "^3.0.2",
|
||||
"stylelint": "^13.1.0",
|
||||
"stylelint": "^13.3.1",
|
||||
"stylelint-config-prettier": "^8.0.1",
|
||||
"stylelint-config-standard": "^20.0.0",
|
||||
"typescript": "^3.8.3",
|
||||
"umi": "^2.13.3",
|
||||
"umi-plugin-react": "^1.15.2",
|
||||
"wait-on": "^4.0.0",
|
||||
"umi": "^2.13.12",
|
||||
"umi-plugin-react": "^1.15.7",
|
||||
"wait-on": "^4.0.2",
|
||||
"workbox-webpack-plugin": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -10,7 +10,7 @@ import React from 'react'
|
||||
|
||||
export * from './modals.js'
|
||||
|
||||
|
||||
export {SwapMode}
|
||||
|
||||
export function QueryRuntime() {
|
||||
const validBackup = ycore.validate.backup()
|
||||
|
@ -62,4 +62,26 @@ export const comty_get = {
|
||||
)
|
||||
|
||||
},
|
||||
get_user_data: (callback, payload) => {
|
||||
let formdata = new FormData();
|
||||
let callOptions = { includeUserID: false };
|
||||
|
||||
if (!payload) {
|
||||
callOptions = { includeUserID: true }
|
||||
formdata.append('fetch', 'user_data')
|
||||
}
|
||||
|
||||
if (payload) {
|
||||
payload.user_id? formdata.append('user_id', payload.user_id) : null
|
||||
payload.fetch? formdata.append('fetch', payload.fetch) : null
|
||||
}
|
||||
|
||||
API_Call(
|
||||
(err, res) => {
|
||||
return callback(err, res)
|
||||
},
|
||||
endpoints.comty_endpoints.get_userData,
|
||||
formdata, callOptions
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -127,6 +127,12 @@ export const comty_post = {
|
||||
formdata
|
||||
)
|
||||
},
|
||||
hashtag: (callback, payload) => {
|
||||
if (!payload) return false
|
||||
const { hashtag } = payload
|
||||
// DOING
|
||||
|
||||
},
|
||||
getSaved: (callback, payload) => {
|
||||
if (!payload) {
|
||||
yconsole.log(
|
||||
|
@ -80,7 +80,7 @@ export const __rscloud = {
|
||||
return callback(true, error)
|
||||
}
|
||||
},
|
||||
ycore.endpoints.comty_endpoints.get_userData_endpoint,
|
||||
ycore.endpoints.comty_endpoints.get_userData,
|
||||
formdata,
|
||||
optionCall,
|
||||
user_token
|
||||
|
@ -42,8 +42,6 @@ localforage.config({
|
||||
storeName: package_json.name,
|
||||
})
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert a base64 string in a Blob according to the data and contentType.
|
||||
*
|
||||
|
@ -32,6 +32,8 @@ export default class HeaderSearch extends Component {
|
||||
|
||||
openSearcher = () => {
|
||||
const { value } = this.state
|
||||
if (value.length < 1) return false
|
||||
if (value == /\s/) return false
|
||||
ycore.SecondarySwap.openSearch(value);
|
||||
}
|
||||
|
||||
|
@ -5,18 +5,86 @@ import * as Icons from '@ant-design/icons'
|
||||
import styles from './index.less'
|
||||
import classnames from 'classnames'
|
||||
|
||||
import { __priPost, __secComments, __priSearch, __trendings, __pro } from './renders.js'
|
||||
import {
|
||||
__priPost,
|
||||
__secComments,
|
||||
__priSearch,
|
||||
__trendings,
|
||||
__pro,
|
||||
} from './renders.js'
|
||||
|
||||
export const SwapMode = {
|
||||
close: () => {
|
||||
SecondaryLayoutComponent.Swapper.close()
|
||||
},
|
||||
openPost: (a, b) => {
|
||||
SecondaryLayoutComponent.setState({
|
||||
mode: 'post',
|
||||
global_raw: a,
|
||||
})
|
||||
SecondaryLayoutComponent.Swapper.open()
|
||||
openPost: (id, content) => {
|
||||
if (!id) return false
|
||||
let d
|
||||
|
||||
if (content) {
|
||||
d = content
|
||||
} else {
|
||||
const payload = { post_id: id }
|
||||
ycore.comty_post.get((err, res) => {
|
||||
if (err) {
|
||||
return false
|
||||
}
|
||||
const post_data = JSON.parse(res)['post_data']
|
||||
d = post_data
|
||||
}, payload)
|
||||
}
|
||||
|
||||
console.log(d)
|
||||
|
||||
if (d) {
|
||||
try {
|
||||
const pdata = (
|
||||
<__priPost
|
||||
isMobile={SecondaryLayoutComponent.props.isMobile}
|
||||
payload={d}
|
||||
/>
|
||||
)
|
||||
SecondaryLayoutComponent.setState({ rd__pri: pdata, __pri_full: true })
|
||||
|
||||
return true
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
return null
|
||||
}
|
||||
}
|
||||
return false
|
||||
},
|
||||
openComments: (id, content) => {
|
||||
if (!id) return false
|
||||
let d
|
||||
|
||||
if (content) {
|
||||
d = content
|
||||
} else {
|
||||
console.debug('Missing Payload [content]!')
|
||||
localStorage.setItem('p_back_uid', postID)
|
||||
const payload = { post_id: id }
|
||||
ycore.comty_post.get((err, res) => {
|
||||
if (err) {
|
||||
return false
|
||||
}
|
||||
const post_comments = JSON.parse(res)['get_post_comments']
|
||||
d = post_comments
|
||||
}, payload)
|
||||
}
|
||||
if (d) {
|
||||
try {
|
||||
const pdata = <__secComments post_id={id} payload={d} />
|
||||
SecondaryLayoutComponent.setState({
|
||||
rd__sec: pdata,
|
||||
__sec_active: true,
|
||||
})
|
||||
return true
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
return null
|
||||
}
|
||||
}
|
||||
},
|
||||
openSearch: a => {
|
||||
SecondaryLayoutComponent.setState({
|
||||
@ -31,98 +99,37 @@ export const SwapMode = {
|
||||
global_raw: fragment,
|
||||
})
|
||||
SecondaryLayoutComponent.Swapper.unique()
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
export default class Secondary extends React.PureComponent {
|
||||
constructor(props) {
|
||||
super(props),
|
||||
window.SecondaryLayoutComponent = this,
|
||||
this.state = {
|
||||
loading: true,
|
||||
half: false,
|
||||
swap: false,
|
||||
mode: '',
|
||||
gen_data: '',
|
||||
global_raw: '',
|
||||
pri_raw: '',
|
||||
sec_raw: '',
|
||||
}
|
||||
(window.SecondaryLayoutComponent = this),
|
||||
(this.state = {
|
||||
loading: true,
|
||||
gen_data: null,
|
||||
// Lays
|
||||
rd__pri: null,
|
||||
rd__sec: null,
|
||||
__pri_full: false,
|
||||
__pri_half: false,
|
||||
__sec_active: false,
|
||||
__sec_full: false,
|
||||
})
|
||||
}
|
||||
|
||||
Swapper = {
|
||||
close: () => {
|
||||
this.setState({
|
||||
swap: false,
|
||||
half: false,
|
||||
unique: false,
|
||||
pri_raw: null,
|
||||
sec_raw: null,
|
||||
global_raw: null,
|
||||
mode: null,
|
||||
rd__pri: null,
|
||||
rd__sec: null,
|
||||
__pri_full: false,
|
||||
__pri_half: false,
|
||||
__sec_active: false,
|
||||
__sec_full: false,
|
||||
})
|
||||
},
|
||||
open: () => {
|
||||
this.setState({
|
||||
swap: true,
|
||||
half: false,
|
||||
unique: false,
|
||||
})
|
||||
},
|
||||
half : () => {
|
||||
this.setState({
|
||||
swap: false,
|
||||
half: true,
|
||||
unique: false,
|
||||
})
|
||||
},
|
||||
unique: ()=>{
|
||||
this.setState({
|
||||
swap: false,
|
||||
half: false,
|
||||
unique: true,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
SwapBalanceContent(container) {
|
||||
switch (container) {
|
||||
case '__pri': {
|
||||
return this.__pri()
|
||||
}
|
||||
case '__sec': {
|
||||
return this.__sec()
|
||||
}
|
||||
default:
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
__pri() {
|
||||
const dtraw = this.state.pri_raw
|
||||
switch (this.state.mode) {
|
||||
case 'post': {
|
||||
return this.renderPost(this.state.global_raw)
|
||||
}
|
||||
case 'search': {
|
||||
return this.renderSearch(dtraw)
|
||||
}
|
||||
case 'fragment': {
|
||||
return this.renderFragment()
|
||||
}
|
||||
default:
|
||||
return this.renderMain()
|
||||
}
|
||||
}
|
||||
__sec() {
|
||||
const dtraw = this.state.sec_raw
|
||||
switch (this.state.mode) {
|
||||
case 'post': {
|
||||
return this.renderComments(this.state.global_raw)
|
||||
}
|
||||
default:
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
renderSearch = key => {
|
||||
@ -136,44 +143,26 @@ export default class Secondary extends React.PureComponent {
|
||||
}, payload)
|
||||
return (
|
||||
<div className={styles.renderSearch_wrapper}>
|
||||
<h2><Icons.SearchOutlined /> Results of {key || '... nothing ?'}</h2>
|
||||
<h2>
|
||||
<Icons.SearchOutlined /> Results of {key || '... nothing ?'}
|
||||
</h2>
|
||||
<__priSearch payload={this.state.global_raw} />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
renderPost = payload => {
|
||||
const post_data = JSON.parse(payload)['post_data']
|
||||
return <__priPost isMobile={this.props.isMobile} payload={post_data} />
|
||||
}
|
||||
|
||||
renderComments = payload => {
|
||||
try {
|
||||
const post_comments = JSON.parse(payload)['post_comments']
|
||||
const post_data = JSON.parse(payload)['post_data']
|
||||
return (
|
||||
<__secComments post_id={post_data.post_id} payload={post_comments} />
|
||||
)
|
||||
} catch (error) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
renderMain = payload => {
|
||||
try {
|
||||
const trending_data = JSON.parse(this.state.gen_data)['trending_hashtag']
|
||||
return(
|
||||
return (
|
||||
<div className={styles.secondary_main}>
|
||||
|
||||
{ycore.IsThisUser.pro()? <__pro /> : <__pro /> }
|
||||
{ycore.IsThisUser.pro() ? <__pro /> : <__pro />}
|
||||
<__trendings data={trending_data} />
|
||||
|
||||
|
||||
</div>
|
||||
)
|
||||
} catch (error) {
|
||||
return null
|
||||
}
|
||||
|
||||
}
|
||||
renderFragment = () => {
|
||||
try {
|
||||
@ -183,46 +172,93 @@ export default class Secondary extends React.PureComponent {
|
||||
return null
|
||||
}
|
||||
}
|
||||
componentDidMount(){
|
||||
ycore.comty_get.general_data((err,res)=> {
|
||||
|
||||
isOpen() {
|
||||
if (
|
||||
this.state.__pri_full ||
|
||||
this.state.__pri_half ||
|
||||
this.state.__sec_active ||
|
||||
this.state.__sec_full
|
||||
)
|
||||
return true
|
||||
return false
|
||||
}
|
||||
|
||||
componentDidUpdate() {
|
||||
if (this.isOpen()) {
|
||||
document.addEventListener('keydown', this.escFunction, false)
|
||||
} else {
|
||||
document.removeEventListener('keydown', this.escFunction, false)
|
||||
}
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
ycore.comty_get.general_data((err, res) => {
|
||||
if (err) return false
|
||||
const notification_data = JSON.parse(res)['notifications']
|
||||
this.setState({ loading: false, gen_data: res, notification_data: notification_data })
|
||||
|
||||
this.setState({
|
||||
loading: false,
|
||||
gen_data: res,
|
||||
notification_data: notification_data,
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
escFunction(event) {
|
||||
if (event.keyCode === 27) {
|
||||
SwapMode.close()
|
||||
}
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
document.removeEventListener('keydown', this.escFunction, false)
|
||||
}
|
||||
|
||||
renderTarget(target) {
|
||||
try {
|
||||
switch (target) {
|
||||
case '__pri': {
|
||||
const fragment = this.state.rd__pri
|
||||
return <React.Fragment>{fragment}</React.Fragment>
|
||||
}
|
||||
case '__sec': {
|
||||
const fragment = this.state.rd__sec
|
||||
return <React.Fragment>{fragment}</React.Fragment>
|
||||
}
|
||||
default:
|
||||
return <h3>Invalid Render Target</h3>
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { userData, isMobile } = this.props
|
||||
if (!this.state.loading) return (
|
||||
<>
|
||||
{isMobile? null : <div className={styles.__secondary_colider}></div>}
|
||||
<div
|
||||
id="secondary_layout"
|
||||
className={classnames(styles.secondary_wrapper, {
|
||||
[styles.mobile]: isMobile,
|
||||
[styles.active]: this.state.swap,
|
||||
[styles.half]: this.state.half,
|
||||
[styles.unique]: this.state.unique,
|
||||
})}
|
||||
>
|
||||
{isMobile? null :
|
||||
<div className={styles.secondary_userholder}>
|
||||
<div className={styles.notif_box}>
|
||||
<h1>{this.state.notification_data.length}</h1>
|
||||
</div>
|
||||
<img
|
||||
onClick={() => ycore.router.go(`@${userData.username}`)}
|
||||
src={userData.avatar}
|
||||
/>
|
||||
</div>}
|
||||
if (!this.state.loading)
|
||||
return (
|
||||
<>
|
||||
{isMobile ? null : <div className={styles.__secondary_colider}></div>}
|
||||
<div
|
||||
id="secondary_layout__wrapper"
|
||||
className={classnames(styles.secondary_wrapper, {
|
||||
[styles.mobile]: isMobile,
|
||||
})}
|
||||
>
|
||||
{isMobile ? null : (
|
||||
<div className={styles.secondary_userholder}>
|
||||
<div className={styles.notif_box}>
|
||||
<h1>{this.state.notification_data.length}</h1>
|
||||
</div>
|
||||
<img
|
||||
onClick={() => ycore.router.go(`@${userData.username}`)}
|
||||
src={userData.avatar}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div
|
||||
className={styles.secondary_layout_bg}
|
||||
>
|
||||
|
||||
<div className={styles.secondary_container_1}>
|
||||
{this.state.swap || this.state.half || this.state.unique ? (
|
||||
{this.isOpen() ? (
|
||||
<antd.Button
|
||||
type="ghost"
|
||||
icon={<Icons.LeftOutlined />}
|
||||
@ -231,24 +267,33 @@ export default class Secondary extends React.PureComponent {
|
||||
Back
|
||||
</antd.Button>
|
||||
) : null}
|
||||
{this.SwapBalanceContent('__pri')}
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
className={classnames(styles.secondary_container_2, {
|
||||
[styles.mobile]: isMobile,
|
||||
[styles.active]: this.state.swap,
|
||||
})}
|
||||
>
|
||||
{this.SwapBalanceContent('__sec')}
|
||||
</div>
|
||||
<div className={styles.secondary_layout_bg}>
|
||||
<div
|
||||
id="secondary_layout_pri"
|
||||
className={classnames(styles.secondary_container_1, {
|
||||
[styles.full_open]: this.state.__pri_full,
|
||||
[styles.half]: this.state.__pri_half,
|
||||
})}
|
||||
>
|
||||
{this.renderTarget('__pri')}
|
||||
</div>
|
||||
|
||||
<div
|
||||
id="secondary_layout__sec"
|
||||
className={classnames(styles.secondary_container_2, {
|
||||
[styles.mobile]: isMobile,
|
||||
[styles.active]: this.state.__sec_active,
|
||||
[styles.full_open]: this.state.__sec_full,
|
||||
})}
|
||||
>
|
||||
{this.renderTarget('__sec')}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
return null
|
||||
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
}
|
||||
|
||||
.secondary_wrapper {
|
||||
width: @secondary_wrapper_hidden_width;
|
||||
width: auto;
|
||||
height: 100vh;
|
||||
|
||||
z-index: 50;
|
||||
@ -19,18 +19,7 @@
|
||||
overflow-x: hidden;
|
||||
|
||||
display: flex;
|
||||
|
||||
|
||||
|
||||
&.active {
|
||||
width: @secondary_wrapper_showFull_width;
|
||||
>.secondary_container_1 {
|
||||
padding: @secondary_container_1_padding;
|
||||
}
|
||||
//@media (min-width: 1000px) {
|
||||
// width: 95.4%
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
&.mobile {
|
||||
width: 100%;
|
||||
@ -153,20 +142,28 @@
|
||||
overflow: hidden;
|
||||
|
||||
transition: all @__Global_SwapAnimDuration ease-in-out;
|
||||
background-color: @secondary_container_bg_background;
|
||||
background-color: transparent;
|
||||
|
||||
border-radius: @__Global_layout_border-rd;
|
||||
}
|
||||
|
||||
.secondary_container_1 {
|
||||
width: 100%;
|
||||
width: @secondary_wrapper_hidden_width;
|
||||
height: 100%;
|
||||
|
||||
position: relative;
|
||||
padding: 30px 30px 30px 35px;
|
||||
|
||||
color: @secondary_container_1_color;
|
||||
|
||||
|
||||
&.full_opent {
|
||||
width: @secondary_wrapper_showFull_width;
|
||||
padding: @secondary_container_1_padding;
|
||||
}
|
||||
&.half {
|
||||
|
||||
}
|
||||
|
||||
:global {
|
||||
.ant-btn {
|
||||
color: @secondary_container_1_btn_color;
|
||||
|
@ -21,7 +21,7 @@ const VerifiedBadge = () => (
|
||||
</svg>
|
||||
)
|
||||
|
||||
export class __priPost extends React.Component {
|
||||
export class __priPost extends React.PureComponent {
|
||||
renderContent(payload) {
|
||||
const { id, postText, postFile_full, post_time, publisher } = payload
|
||||
const {isMobile}= this.props
|
||||
@ -175,7 +175,7 @@ export class __secComments extends React.Component {
|
||||
return (
|
||||
<div className={styles.comments_body}>
|
||||
<div className={styles.comments_body_title}>
|
||||
<h1>Comments ({comment_data.length})</h1>
|
||||
{/* <h1>Comments ({comment_data.length})</h1> */}
|
||||
</div>
|
||||
<div className={styles.comments_cards_wrapper}>
|
||||
{loading ? (
|
||||
|
@ -36,6 +36,7 @@ class MainFeed extends React.PureComponent {
|
||||
super(props)
|
||||
window.MainFeedComponent = this
|
||||
this.state = {
|
||||
AutoFeed: this.props.auto? true:false,
|
||||
NewAV: false,
|
||||
invalid: false,
|
||||
loading: false,
|
||||
@ -51,7 +52,7 @@ class MainFeed extends React.PureComponent {
|
||||
this.syncService(data)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
toogleLoader() {
|
||||
this.setState({ loading: !this.state.loading })
|
||||
}
|
||||
@ -160,7 +161,7 @@ class MainFeed extends React.PureComponent {
|
||||
|
||||
|
||||
render() {
|
||||
const { data, loading, isEnd, invalid, NewAV } = this.state
|
||||
const { data, loading, isEnd, invalid, NewAV, AutoFeed } = this.state
|
||||
const renderFeedPosts_payload = {data: data, loading: loading, isEnd: isEnd, feedGet: this.feedGet}
|
||||
|
||||
if (invalid){
|
||||
@ -176,7 +177,7 @@ class MainFeed extends React.PureComponent {
|
||||
if (!loading) {
|
||||
return (
|
||||
<div className={styles.main_feed_wrapper} id="mainfeed">
|
||||
{NewAV? ComponentNewAV(() => this.feedGet.first()) : null}
|
||||
{AutoFeed? NewAV? ComponentNewAV(() => this.feedGet.first()) : null : null}
|
||||
{renderFeedPosts(renderFeedPosts_payload)}
|
||||
</div>
|
||||
)
|
||||
|
@ -38,20 +38,11 @@ class PostCard extends React.PureComponent {
|
||||
this.setState({visibleMoreMenu: !this.state.visibleMoreMenu})
|
||||
}
|
||||
|
||||
goToPost(postID) {
|
||||
localStorage.setItem('p_back_uid', postID)
|
||||
const payload = { post_id: postID }
|
||||
ycore.comty_post.get((err, res) => {
|
||||
if (err) {
|
||||
return false
|
||||
}
|
||||
ycore.SecondarySwap.openPost(res)
|
||||
}, payload)
|
||||
}
|
||||
|
||||
render() {
|
||||
const { payload, customActions } = this.props
|
||||
const ActShowMode = ycore.AppSettings.auto_hide_postbar
|
||||
|
||||
const post_data = payload || emptyPayload;
|
||||
const {
|
||||
id,
|
||||
post_time,
|
||||
@ -62,7 +53,17 @@ class PostCard extends React.PureComponent {
|
||||
is_post_pinned,
|
||||
is_liked,
|
||||
post_comments,
|
||||
} = payload || emptyPayload
|
||||
get_post_comments
|
||||
} = post_data
|
||||
|
||||
const SwapThisPost = () => {
|
||||
localStorage.setItem('p_back_uid', id)
|
||||
if (postFile){
|
||||
ycore.SwapMode.openPost(id, post_data)
|
||||
}
|
||||
ycore.SwapMode.openComments(id, get_post_comments)
|
||||
}
|
||||
|
||||
const handlePostActions = {
|
||||
delete: post_id => {
|
||||
const payload = { post_id: post_id }
|
||||
@ -119,7 +120,7 @@ class PostCard extends React.PureComponent {
|
||||
/>
|
||||
</div>,
|
||||
<antd.Badge dot={post_comments > 0 ? true : false}>
|
||||
<MICON.InsertComment key="comments" onClick={() => this.goToPost(id)} />
|
||||
<MICON.InsertComment key="comments" onClick={() => SwapThisPost()} />
|
||||
</antd.Badge>,
|
||||
]
|
||||
const actions = customActions || defaultActions
|
||||
@ -174,7 +175,7 @@ class PostCard extends React.PureComponent {
|
||||
return (
|
||||
<div className={styles.post_card_wrapper}>
|
||||
<antd.Card
|
||||
onDoubleClick={() => this.goToPost(id)}
|
||||
onDoubleClick={() => SwapThisPost()}
|
||||
hoverable
|
||||
className={ActShowMode ? null : styles.showMode}
|
||||
actions={actions}
|
||||
|
@ -2,7 +2,6 @@ import React from 'react'
|
||||
import styles from './styles.less'
|
||||
import * as ycore from 'ycore'
|
||||
import * as antd from 'antd'
|
||||
import { PageHeaderWrapper } from '@ant-design/pro-layout'
|
||||
import { CustomIcons, MainFeed, PostCreator } from 'components'
|
||||
import { SetHeaderSearchType } from 'components/HeaderSearch'
|
||||
import * as Icons from '@ant-design/icons'
|
||||
@ -148,8 +147,8 @@ const moreMenu = (
|
||||
<img src={RenderValue.cover} />
|
||||
</div>
|
||||
|
||||
<PageHeaderWrapper
|
||||
content={
|
||||
<div>
|
||||
|
||||
<div className={styles.pageHeaderContent}>
|
||||
<div className={styles.avatar}>
|
||||
<antd.Avatar shape="square" src={RenderValue.avatar} />
|
||||
@ -215,8 +214,7 @@ const moreMenu = (
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
{ycore.IsThisUser.same(UUID) ? (
|
||||
|
@ -1,240 +0,0 @@
|
||||
import React, { Component } from 'react'
|
||||
import { connect } from 'dva'
|
||||
import { Form, Icon as LegacyIcon } from '@ant-design/compatible'
|
||||
|
||||
import { Button, Input, Drawer } from 'antd'
|
||||
import * as ycore from 'ycore'
|
||||
import * as Icons from '@ant-design/icons'
|
||||
|
||||
import styles from './index.less'
|
||||
|
||||
const FormItem = Form.Item
|
||||
|
||||
@connect(({ loading }) => ({ loading }))
|
||||
@Form.create()
|
||||
class YulioID extends Component {
|
||||
constructor(props) {
|
||||
super(props)
|
||||
this.state = {
|
||||
// Drawers Visibility (Default on False)
|
||||
MainLoginVisible: true,
|
||||
ShowLoading: false,
|
||||
Answered: false,
|
||||
transition: false,
|
||||
}
|
||||
}
|
||||
// Handlers & others
|
||||
handleUsername(text) {
|
||||
this.setState({ RawUsername: text.target.value })
|
||||
}
|
||||
handlePassword(text) {
|
||||
this.setState({ RawPassword: text.target.value })
|
||||
}
|
||||
handleRetry = () => {
|
||||
this.setState({ ShowLoading: false, StateException: false, StateIcon: '' })
|
||||
}
|
||||
handleEnter = e => {
|
||||
this.handleLogin()
|
||||
}
|
||||
|
||||
handleLogin = () => {
|
||||
var prefix = '[YID]: '
|
||||
const { RawUsername, RawPassword } = this.state
|
||||
var EncPassword = btoa(RawPassword)
|
||||
var EncUsername = btoa(RawUsername)
|
||||
|
||||
if (!EncUsername || !EncPassword) {
|
||||
var message = 'Incomplete information!'
|
||||
ycore.yconsole.log(prefix, message)
|
||||
}
|
||||
|
||||
if (EncUsername && EncPassword) {
|
||||
this.setState({ ShowLoading: true, StateMessage: 'Wait a sec...' })
|
||||
if (ycore.AppSettings.InfiniteLogin == true) {
|
||||
ycore.yconsole.log(prefix, 'InfiniteLogin is enabled! Disabled getAuth')
|
||||
} else {
|
||||
ycore.yconsole.log(prefix, 'Initialising login process...')
|
||||
const payload = { EncUsername, EncPassword }
|
||||
ycore.app_session.login((err, res) => {
|
||||
this.handleResponse(res)
|
||||
}, payload)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
handleResponse = response => {
|
||||
if (response == '200') {
|
||||
ycore.LoginPage.transitionToogle()
|
||||
this.setState({
|
||||
StateIcon: 'login',
|
||||
StateMessage: 'Wait a sec...',
|
||||
StateException: false,
|
||||
})
|
||||
|
||||
}
|
||||
if (response == '400') {
|
||||
this.setState({
|
||||
StateIcon: 'exclamation-circle',
|
||||
StateMessage: 'Invalid credentials',
|
||||
StateException: true,
|
||||
})
|
||||
}
|
||||
if (response == '404') {
|
||||
this.setState({
|
||||
StateIcon: 'exclamation-circle',
|
||||
StateMessage: 'Invalid Data',
|
||||
StateException: true,
|
||||
})
|
||||
}
|
||||
if (response == '500') {
|
||||
this.setState({
|
||||
StateIcon: 'cluster',
|
||||
StateMessage: 'Server Error',
|
||||
StateException: true,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { visible } = this.props
|
||||
const { getFieldDecorator } = this.props.form
|
||||
const { ShowLoading, StateIcon, StateMessage, StateException } = this.state
|
||||
|
||||
return (
|
||||
<div className={styles.loginWrapper}>
|
||||
<Drawer
|
||||
width="100%"
|
||||
mask={false}
|
||||
getContainer={false}
|
||||
|
||||
closable={false}
|
||||
visible={visible}
|
||||
className={styles.loginWrapper}
|
||||
>
|
||||
<div className={styles.preheader}>
|
||||
<h6>
|
||||
<img src={'https://api.ragestudio.net/id.svg'} /> YulioID™
|
||||
</h6>
|
||||
</div>
|
||||
<main className={styles.mainlp}>
|
||||
<form className={styles.formlogin}>
|
||||
{ShowLoading ? (
|
||||
<div style={{ height: '329px' }}>
|
||||
<div className={styles.spinner__wrapper} id="loadingspn">
|
||||
{StateIcon ? (
|
||||
<LegacyIcon
|
||||
type={StateIcon}
|
||||
className={
|
||||
StateException
|
||||
? styles.StateIcon_exception
|
||||
: styles.StateIcon
|
||||
}
|
||||
/>
|
||||
) : (
|
||||
<LegacyIcon
|
||||
type="loading"
|
||||
style={{ fontSize: 24, margin: '13px' }}
|
||||
spin
|
||||
/>
|
||||
)}
|
||||
<div>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<div className={styles.resultbox}>
|
||||
<h6> {StateMessage} </h6>
|
||||
{StateException ? (
|
||||
<div className={styles.retryBTN}>
|
||||
<Button
|
||||
style={{ width: '270px' }}
|
||||
type="dashed"
|
||||
onClick={() => this.handleRetry()}
|
||||
>
|
||||
Retry
|
||||
</Button>
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
<div>
|
||||
<div className={styles.input__wrapper}>
|
||||
<label className={styles.labelform}>
|
||||
<LegacyIcon type="user" style={{ fontSize: '15px' }} />{' '}
|
||||
Username
|
||||
</label>
|
||||
<FormItem>
|
||||
{getFieldDecorator('Username', {
|
||||
rules: [{ required: true }],
|
||||
})(
|
||||
<Input
|
||||
onPressEnter={this.handleEnter}
|
||||
className={styles.inputform}
|
||||
type="text"
|
||||
placeholder="Username"
|
||||
onChange={text => {
|
||||
this.handleUsername(text)
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
</FormItem>
|
||||
</div>
|
||||
<div className={styles.input__wrapper}>
|
||||
<label className={styles.labelform}>
|
||||
<LegacyIcon type="unlock" style={{ fontSize: '15px' }} />{' '}
|
||||
Password
|
||||
</label>
|
||||
<FormItem>
|
||||
{getFieldDecorator('Password', {
|
||||
rules: [{ required: true }],
|
||||
})(
|
||||
<Input.Password
|
||||
onPressEnter={this.handleEnter}
|
||||
className={styles.inputform}
|
||||
placeholder="Password"
|
||||
onChange={text => {
|
||||
this.handlePassword(text)
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
</FormItem>
|
||||
</div>
|
||||
<div style={{ margin: 'auto' }}>
|
||||
<a
|
||||
className={styles.buttonlp}
|
||||
id="login"
|
||||
onClick={this.handleLogin}
|
||||
>
|
||||
Login
|
||||
</a>
|
||||
</div>
|
||||
<h2
|
||||
style={{
|
||||
textAlign: 'center',
|
||||
margin: '8px',
|
||||
color: '#666',
|
||||
}}
|
||||
>
|
||||
Or
|
||||
</h2>
|
||||
<div className={styles.moreActions}>
|
||||
<Button type="dashed">
|
||||
<Icons.QuestionCircleOutlined /> Forgotten password
|
||||
</Button>
|
||||
<Button type="dashed">
|
||||
<Icons.UserAddOutlined /> Create an account
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</form>
|
||||
</main>
|
||||
</Drawer>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export default YulioID
|
@ -1,485 +0,0 @@
|
||||
@import '~themes/index.less';
|
||||
|
||||
.loginWrapper {
|
||||
:global {
|
||||
.ant-drawer-right.ant-drawer-open.no-mask {
|
||||
right: 1px;
|
||||
-ms-transform: translateX(1px);
|
||||
transform: translateX(1px);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {
|
||||
width: 100%;
|
||||
border-radius: 20px 0 0 20px;
|
||||
}
|
||||
|
||||
.ant-drawer-body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.ant-drawer {
|
||||
box-shadow: none;
|
||||
border-radius: 20px 0 0 20px;
|
||||
max-width: 512px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ant-drawer-content {
|
||||
background: #ffffff9f;
|
||||
border-radius: 20px 0 0 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.StateIcon {
|
||||
font-size: 24px;
|
||||
margin: 13px;
|
||||
}
|
||||
|
||||
.StateIcon_exception {
|
||||
font-size: 24px;
|
||||
margin: 13px;
|
||||
color: red !important;
|
||||
|
||||
:global {
|
||||
i {
|
||||
color: red !important;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mainlp {
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
word-break: keep-all;
|
||||
|
||||
color: @foregroundColor;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.mainlp .sectionlp {
|
||||
border: 1px solid @accentColor;
|
||||
position: relative;
|
||||
padding: 40px 40px 50px;
|
||||
}
|
||||
|
||||
.mainlp .sectionlp>h6 {
|
||||
color: @accentColor;
|
||||
background: @canvasColor;
|
||||
position: absolute;
|
||||
top: -10px;
|
||||
left: 20px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.mainlp .sectionlp .h6lp.subheader {
|
||||
color: @grayColor;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (max-width: 992px) {
|
||||
section:not(:last-child) {
|
||||
border-width: 0 0 1px;
|
||||
}
|
||||
|
||||
section:last-child {
|
||||
border-width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.buttons {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.buttons>* {
|
||||
flex: 1 1 calc(50% - 20px);
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.buttons>*:nth-child(odd) {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
a.buttonlp,
|
||||
input.buttonlp,
|
||||
.buttonlp {
|
||||
outline: none;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
display: inline-block;
|
||||
border: none;
|
||||
font: 500 16px/1 "Poppins", sans-serif;
|
||||
padding: 20px;
|
||||
cursor: pointer;
|
||||
border-radius: @borderRadius;
|
||||
background: @primaryColor;
|
||||
color: @backgroundColor;
|
||||
position: relative;
|
||||
top: 0;
|
||||
transition: 0.2s ease;
|
||||
}
|
||||
|
||||
a.buttonlp:hover,
|
||||
a.buttonlp.hover,
|
||||
input.buttonlp:hover,
|
||||
input.buttonlp.hover,
|
||||
.buttonlp:hover,
|
||||
.buttonlp.hover {
|
||||
top: -3px;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
a.buttonlp:active,
|
||||
a.buttonlp.active,
|
||||
input.buttonlp:active,
|
||||
.input.buttonlp.active,
|
||||
.buttonlp:active,
|
||||
.buttonlp.active {
|
||||
background: @primaryShade4;
|
||||
outline: none;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||
top: 0;
|
||||
}
|
||||
|
||||
a.buttonlp.disabled,
|
||||
input.buttonlp.disabled,
|
||||
.buttonlp.disabled {
|
||||
opacity: 0.4;
|
||||
user-select: none;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
a.buttonlp.medium,
|
||||
input.buttonlp.medium,
|
||||
.buttonlp.medium {
|
||||
padding: 15px 18px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
a.buttonlp.small,
|
||||
input.buttonlp.small,
|
||||
.buttonlp.small {
|
||||
padding: 10px 12px;
|
||||
width: auto;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
a.buttonlp.secondary,
|
||||
input.buttonlp.secondary,
|
||||
.buttonlp.secondary {
|
||||
background: @secondaryColor;
|
||||
}
|
||||
|
||||
a.buttonlp.secondary:active,
|
||||
a.buttonlp.secondary:focus,
|
||||
a.buttonlp.secondary.active,
|
||||
input.buttonlp.secondary:active,
|
||||
input.buttonlp.secondary:focus,
|
||||
input.buttonlp.secondary.active,
|
||||
.buttonlp.secondary:active,
|
||||
.buttonlp.secondary:focus,
|
||||
.buttonlp.secondary.active {
|
||||
background: @secondaryShade4;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a.buttonlp.accent,
|
||||
input.buttonlp.accent,
|
||||
.buttonlp.accent {
|
||||
background: @accentColor;
|
||||
}
|
||||
|
||||
a.buttonlp.accent:active,
|
||||
a.buttonlp.accent:focus,
|
||||
a.buttonlp.accent.active,
|
||||
input.buttonlp.accent:active,
|
||||
input.buttonlp.accent:focus,
|
||||
input.buttonlp.accent.active,
|
||||
.buttonlp.accent:active,
|
||||
.buttonlp.accent:focus,
|
||||
.buttonlp.accent.active {
|
||||
background: @accentShade4;
|
||||
}
|
||||
|
||||
a.buttonlp.accent2,
|
||||
input.buttonlp.accent2,
|
||||
.buttonlp.accent2 {
|
||||
background: @accent2Color;
|
||||
}
|
||||
|
||||
a.buttonlp.accent2:active,
|
||||
a.buttonlp.accent2:focus,
|
||||
a.buttonlp.accent2.active,
|
||||
input.buttonlp.accent2:active,
|
||||
input.buttonlp.accent2:focus,
|
||||
input.buttonlp.accent2.active,
|
||||
.buttonlp.accent2:active,
|
||||
.buttonlp.accent2:focus,
|
||||
.buttonlp.accent2.active {
|
||||
background: @accent2Shade4;
|
||||
}
|
||||
|
||||
a.buttonlp.accent3,
|
||||
input.buttonlp.accent3,
|
||||
.buttonlp.accent3 {
|
||||
background: @accent3Color;
|
||||
}
|
||||
|
||||
a.buttonlp.accent3:active,
|
||||
a.buttonlp.accent3:focus,
|
||||
a.buttonlp.accent3.active,
|
||||
input.buttonlp.accent3:active,
|
||||
input.buttonlp.accent3:focus,
|
||||
input.buttonlp.accent3.active,
|
||||
.buttonlp.accent3:active,
|
||||
.buttonlp.accent3:focus,
|
||||
.buttonlp.accent3.active {
|
||||
background: @accent3Shade4;
|
||||
}
|
||||
|
||||
/*inputs*/
|
||||
.input__wrapper {
|
||||
margin-bottom: 10px;
|
||||
|
||||
:global {
|
||||
.ant-col {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.inputRG__wrapper {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.labelform {
|
||||
font-weight: 500;
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.inputform,
|
||||
select,
|
||||
textarea {
|
||||
height: 50px;
|
||||
font-size: 16px;
|
||||
border: 2px solid @neutralShade3;
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
font-family: "Poppins";
|
||||
border-radius: @borderRadius;
|
||||
color: @foregroundColor;
|
||||
background: @backgroundColor;
|
||||
}
|
||||
|
||||
.inputform:focus,
|
||||
.inputform.active,
|
||||
select:focus,
|
||||
select.active,
|
||||
textarea:focus,
|
||||
textarea.active {
|
||||
outline: none;
|
||||
border-color: @primaryColor;
|
||||
}
|
||||
|
||||
.inputform:disabled,
|
||||
select:disabled,
|
||||
textarea:disabled {
|
||||
cursor: not-allowed;
|
||||
background: @neutralShade1;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
Input .inputPasswordform {
|
||||
height: 50px;
|
||||
font-size: 16px;
|
||||
border: 2px solid @neutralShade3;
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
font-family: "Poppins";
|
||||
border-radius: @borderRadius;
|
||||
color: @foregroundColor;
|
||||
background: @backgroundColor;
|
||||
}
|
||||
|
||||
Input .inputPasswordform:focus {
|
||||
outline: none;
|
||||
border-color: @primaryColor;
|
||||
}
|
||||
|
||||
.inputform.input {
|
||||
height: 56px;
|
||||
font-size: 18px;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
|
||||
/*spinner*/
|
||||
.spinner+.labellp {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
margin-top: 8px;
|
||||
display: inline-block;
|
||||
text-transform: uppercase;
|
||||
color: @primaryShade4;
|
||||
}
|
||||
|
||||
.spinner1 .spinner {
|
||||
max-width: 50px;
|
||||
margin: auto;
|
||||
height: 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.spinner1 .spinner:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
left: -10%;
|
||||
background: @primaryColor;
|
||||
animation: spinnerLeftRight 1s infinite;
|
||||
}
|
||||
|
||||
.spinner1 .spinner:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
left: -10%;
|
||||
background: @primaryShade2;
|
||||
opacity: 1;
|
||||
animation: spinnerLeftRight 1s infinite 0.06s;
|
||||
}
|
||||
|
||||
@keyframes spinnerLeftRight {
|
||||
0% {
|
||||
left: 85%;
|
||||
}
|
||||
|
||||
50% {
|
||||
left: -10%;
|
||||
}
|
||||
|
||||
100% {
|
||||
left: 85%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.formlogin {
|
||||
width: 95%;
|
||||
height: auto;
|
||||
border-radius: 10px;
|
||||
padding: 30px;
|
||||
box-shadow: 0 3px 15px rgba(51, 51, 51, 0.2);
|
||||
background: #ffffff44;
|
||||
margin: 20px 10px 20px 10px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.formlogin .checkbox {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.formlogin .spinner__wrapper {
|
||||
place-items: center;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
background: rgba(255, 255, 255, 0.85);
|
||||
|
||||
}
|
||||
|
||||
|
||||
.preheader {
|
||||
position: relative;
|
||||
top: 0;
|
||||
|
||||
h1 {
|
||||
font: 700 48px "Nunito", sans-serif;
|
||||
text-align: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
h6 {
|
||||
padding: 3em 0 0 0;
|
||||
line-height: 1px;
|
||||
display: flex;
|
||||
font: 500 16px/1 "Poppins", sans-serif;
|
||||
text-transform: uppercase;
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
height: 17px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.moreActions {
|
||||
display: flex;
|
||||
margin: auto;
|
||||
align-content: center;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
|
||||
:global {
|
||||
.ant-btn {
|
||||
margin: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 472px) {
|
||||
.moreActions {
|
||||
display: grid;
|
||||
align-content: center;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
|
||||
:global {
|
||||
.ant-btn {
|
||||
margin: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.resultbox {
|
||||
h6 {
|
||||
font-family: "Poppins", sans-serif;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
margin: auto;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.retryBTN {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
margin: auto;
|
||||
}
|
@ -11,7 +11,6 @@ import App_about from './App_about'
|
||||
import * as MyLayout from './Layout/index.js'
|
||||
import HeaderSearch from './HeaderSearch'
|
||||
import PageTransition from './PageTransition'
|
||||
import YulioID from './YulioID'
|
||||
|
||||
// User Components
|
||||
import UserBadges from './UserBadges'
|
||||
@ -34,7 +33,6 @@ export {
|
||||
PageTransition,
|
||||
SearchCard,
|
||||
HeaderSearch,
|
||||
YulioID,
|
||||
UserProfile,
|
||||
MyLayout,
|
||||
Loader,
|
||||
|
@ -1,11 +1,9 @@
|
||||
import React from 'react'
|
||||
import { Icon as LegacyIcon } from '@ant-design/compatible'
|
||||
import { Page } from 'components'
|
||||
import styles from './404.less'
|
||||
|
||||
const Error404 = () => (
|
||||
<div className={styles.error}>
|
||||
<LegacyIcon type="api" />
|
||||
|
||||
<h1>OBA BLYAT</h1>
|
||||
<p>
|
||||
<strong>ERROR 404</strong>
|
||||
|
@ -8,7 +8,7 @@ export default class Main extends React.Component {
|
||||
return (
|
||||
<div className={styles.mainWrapper}>
|
||||
<PostCreator userData={ycore.userData()} />
|
||||
<MainFeed get="feed" />
|
||||
<MainFeed auto={true} get="feed" />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -3,13 +3,35 @@ import * as ycore from 'ycore'
|
||||
import * as antd from 'antd'
|
||||
import * as Icons from '@ant-design/icons'
|
||||
|
||||
|
||||
export default class Earnings extends React.Component {
|
||||
state = {
|
||||
loading: true,
|
||||
|
||||
}
|
||||
componentDidMount(){
|
||||
ycore.comty_get.get_user_data((err,res)=>{
|
||||
if (err) return false
|
||||
try {
|
||||
const a = JSON.parse(res)['user_data']
|
||||
this.setState({ loading: false, pro_points: a.points })
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
<h1>
|
||||
<Icons.PaperClipOutlined /> Redeem an Code
|
||||
</h1>
|
||||
<div>
|
||||
<h1><Icons.PaperClipOutlined /> Redeem an Code</h1>
|
||||
<antd.Input placeholder="XXXX-XXXX-XXXX-XXXX" />
|
||||
</div>
|
||||
<div>
|
||||
<h1> Your Pro Points </h1>
|
||||
{this.state.pro_points}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user