From 75af51f0ea3a8301421a0c73e7245c2dc7c2a56f Mon Sep 17 00:00:00 2001 From: srgooglo Date: Thu, 8 Oct 2020 16:17:05 +0200 Subject: [PATCH] added to core queryIndexer, used for index an input rules and returns parsed string with callback --- src/core/index.js | 24 +++++++++++++++++++++++- src/models/app.js | 23 +++++++++++++++++++++++ src/pages/@/[user].js | 21 +++++++++++++++++++++ src/pages/[indexer].js | 26 ++------------------------ 4 files changed, 69 insertions(+), 25 deletions(-) create mode 100644 src/pages/@/[user].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/models/app.js b/src/models/app.js index e94a6e1e..30d3a649 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' @@ -94,6 +95,28 @@ export default { window.PluginGlobals = [] + 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) { } diff --git a/src/pages/@/[user].js b/src/pages/@/[user].js new file mode 100644 index 00000000..a0ad97ac --- /dev/null +++ b/src/pages/@/[user].js @@ -0,0 +1,21 @@ +import React from 'react' +import { pathMatchRegexp } from 'core' +import { router } from 'core/libs/router' +import { Invalid } from 'components' + +export default class UserIndexer extends React.Component { + render() { + const { location } = this.props + const matchRegexp = pathMatchRegexp('/@/:id', location.pathname) + + if (matchRegexp) { + return ( +
+ {matchRegexp[1]} +
+ ) + } + return + } +} + 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