From f0c8b7af009d80107464792bc6bf73496478ab7d Mon Sep 17 00:00:00 2001 From: srgooglo Date: Thu, 8 Oct 2020 18:43:34 +0200 Subject: [PATCH] wtf --- src/core/index.js | 24 ++++++- src/core/libs/verbosity/index.js | 2 +- src/models/app.js | 36 +++++++++++ src/pages/@/[user].js | 64 ++++++++++++++++++ src/pages/@/index.less | 90 ++++++++++++++++++++++++++ src/pages/[indexer].js | 26 +------- src/pages/debug/debuggers/internals.js | 44 +++++++++++++ src/pages/debug/index.js | 10 ++- 8 files changed, 269 insertions(+), 27 deletions(-) create mode 100644 src/pages/@/[user].js create mode 100644 src/pages/@/index.less create mode 100644 src/pages/debug/debuggers/internals.js diff --git a/src/core/index.js b/src/core/index.js index e4c5b8bc..6de7cee9 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -29,6 +29,29 @@ export const app_info = { layout: platform.layout }; +export function queryIndexer(array, callback, params) { + if(!array) return false + + if (Array.isArray(array)) { + let opt = { + regex: /:id/gi + } + + if (params) { + opt = { ...opt, ...params } + } + + array.forEach((e) =>{ + if (e.match != null && e.to != null) { + const pathMatch = pathMatchRegexp(e.match, window.location.pathname) + if (pathMatch != null) { + return callback(e.to.replace(opt.regex, pathMatch[1])) + } + } + }) + } +} + export function createScreenshotFromElement(element){ if (!element) return false html2canvas(element, { @@ -341,7 +364,6 @@ export const time = { }; export function pathMatchRegexp(regexp, pathname) { - console.log('Regex => ', pathname) return pathToRegexp(regexp).exec(pathname) } diff --git a/src/core/libs/verbosity/index.js b/src/core/libs/verbosity/index.js index 242dad85..3f1ff60b 100644 --- a/src/core/libs/verbosity/index.js +++ b/src/core/libs/verbosity/index.js @@ -42,7 +42,6 @@ export function verbosity(data, params, stackTraceParams){ if (typeof(stackTraceParams) !== "undefined" || stackTraceParams != null) { objectToArray(stackTraceParams).forEach((e) => { if(typeof(e.value) !== "undefined"){ - console.log(e.key,e.value) optStackTrace[e.key] = e.value } }) @@ -83,6 +82,7 @@ export function verbosity(data, params, stackTraceParams){ if (Array.isArray(initData)) { return console[opt.type](...data) } + return console[opt.type](data) } diff --git a/src/models/app.js b/src/models/app.js index e94a6e1e..0b6af85a 100755 --- a/src/models/app.js +++ b/src/models/app.js @@ -5,6 +5,7 @@ import { user, session } from 'core/helpers' import { router, verbosity, appInterface } from 'core/libs' import settings from 'core/libs/settings' import { uri_resolver } from 'api/lib' +import { queryIndexer } from 'core' import jwt from 'jsonwebtoken' import cookie from 'cookie_js' @@ -93,6 +94,29 @@ export default { const sessionDataframe = yield select(state => state.app.session_data) window.PluginGlobals = [] + window.Internal = [] + + queryIndexer([ + { + match: '/s;:id', + to: `/settings?key=:id`, + }, + { + match: '/h;:id', + to: `/hashtag?key=:id`, + }, + { + match: '/p;:id', + to: `/post?key=:id`, + }, + { + match: '/@:id', + to: `/@/:id`, + } + ], (callback) => { + window.location = callback + }) + if (!service) { @@ -118,6 +142,10 @@ export default { const { user_id, access_token } = payload.authFrame yield put({ type: 'handleLogin', payload: { user_id, access_token, user_data: payload.dataFrame } }) }, + *initializeInternal({payload}, {select, put}){ + if(!payload) return false + yield put({ type: "handleInternal", payload }) + }, *initializeSocket({payload}, {select, put}){ if(!payload) return false const { type, address } = payload @@ -257,6 +285,14 @@ export default { ...payload, }; }, + handleInternal(state, { payload }){ + verbosity(payload) + if (Array.isArray(payload)) { + payload.forEach((e) => { + window.Internal[e.id] = e.payload + }) + } + }, handleUpdateResolvers(state, { payload }) { state.resolvers = payload }, diff --git a/src/pages/@/[user].js b/src/pages/@/[user].js new file mode 100644 index 00000000..504d32ee --- /dev/null +++ b/src/pages/@/[user].js @@ -0,0 +1,64 @@ +import React from 'react' +import { pathMatchRegexp } from 'core' +import { router } from 'core/libs/router' +import { Invalid } from 'components' +import styles from './index.less' + +import * as antd from 'antd' +import { connect } from 'umi' +const matchRegexp = pathMatchRegexp('/@/:id', location.pathname) + +const __Avatar = "https://comty.pw/upload/photos/2020/09/MEmX2WskbYdqxxIfG1Ci_12_bf9ae629707074e3dde5b6ff4ccb1caf_avatar.jpeg?cache=1599917094" +const __Cover = "https://comty.pw/upload/photos/2020/09/ontbBGwvDruPxxHxzd7K_12_b36cb70f20df86ea77cd04005786bad7_cover.png?cache=1599917132" + +@connect(({ app }) => ({ app })) +class UserLayout extends React.Component{ + state = { + styleComponent: "UserLayout", + userString: matchRegexp[1], + } + + componentDidMount(){ + + } + + render(){ + const { styleComponent } = this.state + const toStyles = e => styles[`${styleComponent}_${e}`] + + return( +
+
+ +
+
+ +
+ +
+ +
+

{this.state.userString}

+
+ +
+ +
+ +
+
+ ) + } +} + + +export default class UserIndexer extends React.Component { + render() { + const { location } = this.props + if (matchRegexp) { + return + } + return + } +} + diff --git a/src/pages/@/index.less b/src/pages/@/index.less new file mode 100644 index 00000000..c5fb674c --- /dev/null +++ b/src/pages/@/index.less @@ -0,0 +1,90 @@ +.UserLayout_wrapper{ + display: flex; + height: 100%; + flex-direction: column; + align-content: center; + + padding: 0 68px 15px 68px; + margin: auto; + border-radius: 0 0 20px 20px; + padding: 20px 0 3px 0; + + padding-top: 0; + overflow: initial !important; +} + +.UserLayout_header{ + font-family: "Poppins", sans-serif; + color: #242424; + + vertical-align: top; + display: flex; + padding: 20px; + + height: 24vh; + background-color: #ffffff; + border-radius: 8px; +} + +.UserLayout_cover{ + display: flex; + position: relative; + width: 100%; + img { + height: min-content; + width: min-content; + + } +} + +.follow_wrapper { + margin: 0 7px 0 7px; + position: relative; + float: right; + } + + +.UserLayout_title{ + padding: 54px; + padding: 0 10px 10px 0; + color: #242424; + font-weight: 500; + font-size: 20px; + line-height: 28px; +} + +.avatar { + transform: translate(-25px, -45px); + max-height: 200px; + max-width: 120px; + + &>span { + position: relative; + z-index: 10; + width: 100%; + height: 100%; + } + + &.mobile{ + transform: translate(0,-90px); + margin: auto; + } + + :global { + .ant-avatar { + box-shadow: 13px 13px 17px 4px rgba(69, 69, 69, 0.151); + border-radius: 7px; + + img { + width: 120px; + } + } + } + } + + + + +.UserLayout_content{ + +} \ No newline at end of file diff --git a/src/pages/[indexer].js b/src/pages/[indexer].js index 065206eb..8996c437 100644 --- a/src/pages/[indexer].js +++ b/src/pages/[indexer].js @@ -1,29 +1,9 @@ import React from 'react' -import { pathMatchRegexp } from 'core' import Error404 from './404.js' -// -import { Invalid } from 'components' -class PageIndexer extends React.Component { +export default class PageIndexer extends React.Component { render() { const { location } = this.props - const matchUser = pathMatchRegexp('/@:id', location.pathname) - const matchSetting = pathMatchRegexp('/~:id', location.pathname) - console.log(matchSetting) - if (matchUser) { - return ( -
- {matchUser} -
- ) - } - if (matchSetting) { - return( -
- -
- ) - } // By default return Error 404 return ( @@ -32,6 +12,4 @@ class PageIndexer extends React.Component { ) } -} - -export default PageIndexer +} \ No newline at end of file diff --git a/src/pages/debug/debuggers/internals.js b/src/pages/debug/debuggers/internals.js new file mode 100644 index 00000000..40feb57f --- /dev/null +++ b/src/pages/debug/debuggers/internals.js @@ -0,0 +1,44 @@ +import React from 'react' +import * as antd from 'antd' +import { connect } from 'umi' + +@connect(({ app }) => ({ app })) +export default class InternalDebug extends React.Component{ + state = { + internals: window.Internal + } + + handleDispatch(){ + this.props.dispatch({ + type: "app/initializeInternal", + payload: [ + { + id: "test", + payload: () => { + console.log("Hey i am alivee") + } + } + ] + }) + } + + handleCallTest(){ + if (window.Internal.test != null) { + window.Internal.test() + } + } + + render(){ + return( +
+ + {JSON.stringify(this.state.internals) ?? "No internals to show"} + +
+ this.handleDispatch()} > init example + this.handleCallTest()} > Call test +
+
+ ) + } +} \ No newline at end of file diff --git a/src/pages/debug/index.js b/src/pages/debug/index.js index 52bf0dbf..9b054ea6 100644 --- a/src/pages/debug/index.js +++ b/src/pages/debug/index.js @@ -8,6 +8,8 @@ import CoreDebug from './debuggers/core' import ThemeDebug from './debuggers/theme' import SocketDebug from './debuggers/socket' import VerbosityDebug from './debuggers/verbosity' +import InternalDebug from './debuggers/internals' + const Debuggers = { api: , @@ -15,7 +17,8 @@ const Debuggers = { core: , theme: , socket: , - verbosity: + verbosity: , + internals: } const menuList = [ @@ -49,6 +52,11 @@ const menuList = [ key: "verbosity", title: "Verbosity", icon: + }, + { + key: "internals", + title: "Internals", + icon: } ]