This repository has been archived on 2022-08-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
outline/app/utils/routeHelpers.js
2017-11-12 10:55:13 -08:00

98 lines
2.3 KiB
JavaScript

// @flow
import Document from 'models/Document';
import Collection from 'models/Collection';
export function homeUrl(): string {
return '/dashboard';
}
export function starredUrl(): string {
return '/starred';
}
export function newCollectionUrl(): string {
return '/collections/new';
}
export function collectionUrl(collectionId: string): string {
return `/collections/${collectionId}`;
}
export function documentUrl(doc: Document): string {
return doc.url;
}
export function slackAuth(
state: string,
scopes: string[] = [
'identity.email',
'identity.basic',
'identity.avatar',
'identity.team',
],
redirectUri: string = `${BASE_URL}/auth/slack`
): string {
const baseUrl = 'https://slack.com/oauth/authorize';
const params = {
client_id: SLACK_KEY,
scope: scopes ? scopes.join(' ') : '',
redirect_uri: redirectUri,
state,
};
const urlParams = Object.keys(params)
.map(key => `${key}=${encodeURIComponent(params[key])}`)
.join('&');
return `${baseUrl}?${urlParams}`;
}
export function documentNewUrl(doc: Document): string {
const newUrl = `${doc.collection.url}/new`;
if (doc.parentDocumentId) {
return `${newUrl}?parentDocument=${doc.parentDocumentId}`;
}
return newUrl;
}
export function documentEditUrl(doc: Document): string {
return `${doc.url}/edit`;
}
export function documentMoveUrl(doc: Document): string {
return `${doc.url}/move`;
}
/**
* Replace full url's document part with the new one in case
* the document slug has been updated
*/
export function updateDocumentUrl(oldUrl: string, newUrl: string): string {
// Update url to match the current one
const urlParts = oldUrl.trim().split('/');
const actions = urlParts.slice(3);
if (actions[0]) {
return [newUrl, actions].join('/');
}
return newUrl;
}
export function newDocumentUrl(collection: Collection): string {
return `${collection.url}/new`;
}
export function searchUrl(query?: string): string {
if (query) return `/search/${encodeURIComponent(query)}`;
return `/search`;
}
export function notFoundUrl(): string {
return '/404';
}
export const matchDocumentSlug =
':documentSlug([0-9a-zA-Z-]*-[a-zA-z0-9]{10,15})';
export const matchDocumentEdit = `/doc/${matchDocumentSlug}/edit`;
export const matchDocumentMove = `/doc/${matchDocumentSlug}/move`;