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 ( +