added to core queryIndexer, used for index an input rules and returns parsed string with callback

This commit is contained in:
srgooglo 2020-10-08 16:17:05 +02:00
parent 4ce2564a50
commit b7f6223ded
4 changed files with 69 additions and 25 deletions

View File

@ -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)
}

View File

@ -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) {
}

21
src/pages/@/[user].js Normal file
View File

@ -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 (
<div style={{ height: "100%" }}>
{matchRegexp[1]}
</div>
)
}
return <Invalid type="index" messageProp1={location.pathname} />
}
}

View File

@ -1,29 +1,9 @@
import React from 'react'
import { pathMatchRegexp } from 'core'
import Error404 from './404.js'
// <UserProfile {...this.props} regx={matchUser} />
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 (
<div>
{matchUser}
</div>
)
}
if (matchSetting) {
return(
<div>
<Invalid type="skeleton" />
</div>
)
}
// By default return Error 404
return (
@ -32,6 +12,4 @@ class PageIndexer extends React.Component {
</div>
)
}
}
export default PageIndexer
}