Applied server action to get config

This commit is contained in:
Alexey Safronov 2024-01-09 20:25:50 +04:00
parent 32ea64d279
commit 5406e7cf35
13 changed files with 122 additions and 240 deletions

View File

@ -16,7 +16,7 @@
"bump": "yarn version apply --all",
"clean": "yarn workspaces foreach -vptiR run clean",
"deploy": "shx rm -rf ../publish/web && yarn workspaces foreach -ptR --from '{@docspace/client,@docspace/login,@docspace/editor,@docspace/management}' run deploy && shx cp -r public ../publish/web/ && node common/scripts/minify-common-locales.js",
"start": "node ./common/scripts/before-build.js && yarn workspaces foreach -vptiR --from '{@docspace/client,@docspace/login,@docspace/editor,@docspace/management}' run start",
"start": "node ./common/scripts/before-build.js && yarn workspaces foreach -vptiR --from '{@docspace/client,@docspace/login,@docspace/doceditor,@docspace/management}' run start",
"start-prod": "yarn workspaces foreach -vptiR --from '{@docspace/client,@docspace/login,@docspace/editor,@docspace/management}' run start-prod",
"storybook": "yarn workspace @docspace/shared storybook",
"storybook-build": "yarn workspace @docspace/shared run storybook-build",

View File

@ -1,4 +1,11 @@
/** @type {import('next').NextConfig} */
const nextConfig = {}
const nextConfig = {
basePath: "/doceditor",
logging: {
fetches: {
fullUrl: true,
},
},
};
module.exports = nextConfig
module.exports = nextConfig;

View File

@ -3,16 +3,18 @@
"version": "2.0.1",
"private": true,
"scripts": {
"dev": "next dev -p 5013",
"build": "next build",
"start": "next start -p 5013",
"start": "next dev -p 5013",
"start-prod": "next start -p 5013",
"lint": "next lint"
},
"dependencies": {
"@onlyoffice/document-editor-react": "^1.3.0",
"next": "14.0.4",
"react": "^18",
"react-dom": "^18",
"@onlyoffice/document-editor-react": "^1.3.0"
"mobx": "^6.8.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"styled-components": "^5.3.9"
},
"devDependencies": {
"@types/node": "^20",

View File

@ -0,0 +1,35 @@
"use server";
import { cookies, headers } from "next/headers";
import IConfig from "@onlyoffice/document-editor-react/dist/esm/model/config";
export async function getData(
fileId: string
//fileVersion: string | undefined,
//doc: string | undefined,
//view: boolean,
//shareKey: string | undefined
) {
const token = cookies().get("asc_auth_key");
const host = headers().get("x-forwarded-host");
const proto = headers().get("x-forwarded-proto");
let headersList = new Headers({
"Content-Type": "application/json",
});
if (token?.value) {
headersList.append("Authorization", token.value);
}
const res = await fetch(
`${proto}://${host}/api/2.0/files/file/${fileId}/openedit`,
{
headers: headersList,
}
);
const { response } = await res.json();
return response as IConfig;
}

View File

@ -1,227 +0,0 @@
"use client";
import { DocumentEditor } from "@onlyoffice/document-editor-react";
const config = {
document: {
fileType: "docx",
info: {
favorite: false,
folder: "My documents",
owner: "Me",
sharingSettings: [
{
user: "Me",
permissions: "Full Access",
},
],
type: 0,
uploaded: "12/19/2023 09:21",
},
isLinkedForMe: false,
key: "3Qs7f_MQw6HAEVMqehSBQfDeEKQqGs1C1_M33kzGs6k_",
permissions: {
changeHistory: false,
comment: true,
download: true,
edit: true,
fillForms: false,
modifyFilter: true,
print: true,
rename: true,
review: true,
copy: true,
},
referenceData: {
fileKey: 653796,
instanceId: "184",
},
title: "Новый документ.docx",
url: "https://uzbekistan.onlyoffice.io/filehandler.ashx?action=stream&fileid=653796&stream_auth=442188823390.YQYQKUZDSU44WDVLAKKFPWPJGV0NW4HOSGDN7ZN2U",
},
documentType: "word",
editorConfig: {
callbackUrl:
"https://uzbekistan.onlyoffice.io/filehandler.ashx?action=track&fileid=653796&stream_auth=442188823446.GJEL2CARK4MK5M5XOYBEPV33AJXRIF7GRT7PYY3LKW",
createUrl:
"https://uzbekistan.onlyoffice.io/filehandler.ashx?action=create&doctype=word&title=New+Document",
customization: {
about: true,
feedback: {
url: "https://helpdesk.onlyoffice.com",
visible: true,
},
forcesave: true,
goback: {
url: "https://uzbekistan.onlyoffice.io/#11240",
},
logo: {
image:
"https://uzbekistan.onlyoffice.io/static/images/logo/docseditor.svg",
imageDark:
"https://uzbekistan.onlyoffice.io/static/images/logo/docseditor.svg",
url: "https://uzbekistan.onlyoffice.io/",
},
mentionShare: true,
submitForm: false,
},
lang: "en-GB",
mode: "edit",
modeWrite: true,
plugins: {
pluginsData: [],
},
recent: [
{
folder: "Public room",
title: "sample.pdf",
url: "https://uzbekistan.onlyoffice.io/doceditor?fileid=649535",
},
{
folder: "Tashkent",
title: "DWSample1-DOC.docx",
url: "https://uzbekistan.onlyoffice.io/doceditor?fileid=645728",
},
{
folder: "Tashkent",
title: "Новый документ.docx",
url: "https://uzbekistan.onlyoffice.io/doceditor?fileid=646369",
},
{
folder: "My documents",
title: "New document.docx",
url: "https://uzbekistan.onlyoffice.io/doceditor?fileid=648031",
},
{
folder: "New folder",
title: "Новый документ.docx",
url: "https://uzbekistan.onlyoffice.io/doceditor?fileid=653629",
},
{
folder: "My documents",
title: "DocSpace - users.pdf",
url: "https://uzbekistan.onlyoffice.io/doceditor?fileid=646795",
},
{
folder: "My documents",
title: "200MB-TESTFILE.ORG.pdf",
url: "https://uzbekistan.onlyoffice.io/doceditor?fileid=653358",
},
{
folder: "My documents",
title: "مستند جديد.docx",
url: "https://uzbekistan.onlyoffice.io/doceditor?fileid=647760",
},
{
folder: "My documents",
title: "DWSample1.DOC.docx",
url: "https://uzbekistan.onlyoffice.io/doceditor?fileid=646801",
},
],
templates: [],
user: {
id: "7ea27dbc-e760-4832-bd23-960c46cae082",
name: "Alexey Safronov",
},
},
editorType: 0,
editorUrl: "https://asc.docs.teamlab.info/web-apps/apps/api/documents/api.js",
token:
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJpbmZvIjp7ImZhdm9yaXRlIjpmYWxzZSwiZm9sZGVyIjoiTXkgZG9jdW1lbnRzIiwib3duZXIiOiJNZSIsInNoYXJpbmdTZXR0aW5ncyI6W3sidXNlciI6Ik1lIiwicGVybWlzc2lvbnMiOiJGdWxsIEFjY2VzcyJ9XSwidHlwZSI6MCwidXBsb2FkZWQiOiIxMi8xOS8yMDIzIDA5OjIxIn0sImlzTGlua2VkRm9yTWUiOmZhbHNlLCJrZXkiOiIzUXM3Zl9NUXc2SEFFVk1xZWhTQlFmRGVFS1FxR3MxQzFfTTMza3pHczZrXyIsInBlcm1pc3Npb25zIjp7ImNoYW5nZUhpc3RvcnkiOmZhbHNlLCJjb21tZW50Ijp0cnVlLCJkb3dubG9hZCI6dHJ1ZSwiZWRpdCI6dHJ1ZSwiZmlsbEZvcm1zIjpmYWxzZSwibW9kaWZ5RmlsdGVyIjp0cnVlLCJwcmludCI6dHJ1ZSwicmVuYW1lIjp0cnVlLCJyZXZpZXciOnRydWUsImNvcHkiOnRydWV9LCJyZWZlcmVuY2VEYXRhIjp7ImZpbGVLZXkiOjY1Mzc5NiwiaW5zdGFuY2VJZCI6IjE4NCJ9LCJ0aXRsZSI6Ilx1MDQxRFx1MDQzRVx1MDQzMlx1MDQ0Qlx1MDQzOSBcdTA0MzRcdTA0M0VcdTA0M0FcdTA0NDNcdTA0M0NcdTA0MzVcdTA0M0RcdTA0NDIuZG9jeCIsInVybCI6Imh0dHBzOi8vdXpiZWtpc3Rhbi5vbmx5b2ZmaWNlLmlvL2ZpbGVoYW5kbGVyLmFzaHg_YWN0aW9uPXN0cmVhbVx1MDAyNmZpbGVpZD02NTM3OTZcdTAwMjZzdHJlYW1fYXV0aD00NDIxODg4MjMzOTAuWVFZUUtVWkRTVTQ0V0RWTEFLS0ZQV1BKR1YwTlc0SE9TR0RON1pOMlUifSwiZG9jdW1lbnRUeXBlIjoid29yZCIsImVkaXRvckNvbmZpZyI6eyJjYWxsYmFja1VybCI6Imh0dHBzOi8vdXpiZWtpc3Rhbi5vbmx5b2ZmaWNlLmlvL2ZpbGVoYW5kbGVyLmFzaHg_YWN0aW9uPXRyYWNrXHUwMDI2ZmlsZWlkPTY1Mzc5Nlx1MDAyNnN0cmVhbV9hdXRoPTQ0MjE4ODgyMzM5My5MMDZWUlA5U1ZXQkxZNlVMUUZLVFZMRUtWMFM2OEpQTTM0RzhQSFhFTUUiLCJjcmVhdGVVcmwiOiJodHRwczovL3V6YmVraXN0YW4ub25seW9mZmljZS5pby9maWxlaGFuZGxlci5hc2h4P2FjdGlvbj1jcmVhdGVcdTAwMjZkb2N0eXBlPXdvcmRcdTAwMjZ0aXRsZT1OZXdcdTAwMkJEb2N1bWVudCIsImN1c3RvbWl6YXRpb24iOnsiYWJvdXQiOnRydWUsImZlZWRiYWNrIjp7InVybCI6Imh0dHBzOi8vaGVscGRlc2sub25seW9mZmljZS5jb20iLCJ2aXNpYmxlIjp0cnVlfSwiZm9yY2VzYXZlIjp0cnVlLCJnb2JhY2siOnsidXJsIjoiaHR0cHM6Ly91emJla2lzdGFuLm9ubHlvZmZpY2UuaW8vIzExMjQwIn0sImxvZ28iOnsiaW1hZ2UiOiJodHRwczovL3V6YmVraXN0YW4ub25seW9mZmljZS5pby9zdGF0aWMvaW1hZ2VzL2xvZ28vZG9jc2VkaXRvci5zdmciLCJpbWFnZURhcmsiOiJodHRwczovL3V6YmVraXN0YW4ub25seW9mZmljZS5pby9zdGF0aWMvaW1hZ2VzL2xvZ28vZG9jc2VkaXRvci5zdmciLCJ1cmwiOiJodHRwczovL3V6YmVraXN0YW4ub25seW9mZmljZS5pby8ifSwibWVudGlvblNoYXJlIjp0cnVlLCJzdWJtaXRGb3JtIjpmYWxzZX0sImxhbmciOiJlbi1HQiIsIm1vZGUiOiJlZGl0IiwibW9kZVdyaXRlIjp0cnVlLCJwbHVnaW5zIjp7InBsdWdpbnNEYXRhIjpbXX0sInJlY2VudCI6W3siZm9sZGVyIjoiUHVibGljIHJvb20iLCJ0aXRsZSI6InNhbXBsZS5wZGYiLCJ1cmwiOiJodHRwczovL3V6YmVraXN0YW4ub25seW9mZmljZS5pby9kb2NlZGl0b3I_ZmlsZWlkPTY0OTUzNSJ9LHsiZm9sZGVyIjoiVGFzaGtlbnQiLCJ0aXRsZSI6IkRXU2FtcGxlMS1ET0MuZG9jeCIsInVybCI6Imh0dHBzOi8vdXpiZWtpc3Rhbi5vbmx5b2ZmaWNlLmlvL2RvY2VkaXRvcj9maWxlaWQ9NjQ1NzI4In0seyJmb2xkZXIiOiJUYXNoa2VudCIsInRpdGxlIjoiXHUwNDFEXHUwNDNFXHUwNDMyXHUwNDRCXHUwNDM5IFx1MDQzNFx1MDQzRVx1MDQzQVx1MDQ0M1x1MDQzQ1x1MDQzNVx1MDQzRFx1MDQ0Mi5kb2N4IiwidXJsIjoiaHR0cHM6Ly91emJla2lzdGFuLm9ubHlvZmZpY2UuaW8vZG9jZWRpdG9yP2ZpbGVpZD02NDYzNjkifSx7ImZvbGRlciI6Ik15IGRvY3VtZW50cyIsInRpdGxlIjoiTmV3IGRvY3VtZW50LmRvY3giLCJ1cmwiOiJodHRwczovL3V6YmVraXN0YW4ub25seW9mZmljZS5pby9kb2NlZGl0b3I_ZmlsZWlkPTY0ODAzMSJ9LHsiZm9sZGVyIjoiTmV3IGZvbGRlciIsInRpdGxlIjoiXHUwNDFEXHUwNDNFXHUwNDMyXHUwNDRCXHUwNDM5IFx1MDQzNFx1MDQzRVx1MDQzQVx1MDQ0M1x1MDQzQ1x1MDQzNVx1MDQzRFx1MDQ0Mi5kb2N4IiwidXJsIjoiaHR0cHM6Ly91emJla2lzdGFuLm9ubHlvZmZpY2UuaW8vZG9jZWRpdG9yP2ZpbGVpZD02NTM2MjkifSx7ImZvbGRlciI6Ik15IGRvY3VtZW50cyIsInRpdGxlIjoiRG9jU3BhY2UgLSB1c2Vycy5wZGYiLCJ1cmwiOiJodHRwczovL3V6YmVraXN0YW4ub25seW9mZmljZS5pby9kb2NlZGl0b3I_ZmlsZWlkPTY0Njc5NSJ9LHsiZm9sZGVyIjoiTXkgZG9jdW1lbnRzIiwidGl0bGUiOiIyMDBNQi1URVNURklMRS5PUkcucGRmIiwidXJsIjoiaHR0cHM6Ly91emJla2lzdGFuLm9ubHlvZmZpY2UuaW8vZG9jZWRpdG9yP2ZpbGVpZD02NTMzNTgifSx7ImZvbGRlciI6Ik15IGRvY3VtZW50cyIsInRpdGxlIjoiXHUwNjQ1XHUwNjMzXHUwNjJBXHUwNjQ2XHUwNjJGIFx1MDYyQ1x1MDYyRlx1MDY0QVx1MDYyRi5kb2N4IiwidXJsIjoiaHR0cHM6Ly91emJla2lzdGFuLm9ubHlvZmZpY2UuaW8vZG9jZWRpdG9yP2ZpbGVpZD02NDc3NjAifSx7ImZvbGRlciI6Ik15IGRvY3VtZW50cyIsInRpdGxlIjoiRFdTYW1wbGUxLkRPQy5kb2N4IiwidXJsIjoiaHR0cHM6Ly91emJla2lzdGFuLm9ubHlvZmZpY2UuaW8vZG9jZWRpdG9yP2ZpbGVpZD02NDY4MDEifV0sInRlbXBsYXRlcyI6W10sInVzZXIiOnsiaWQiOiI3ZWEyN2RiYy1lNzYwLTQ4MzItYmQyMy05NjBjNDZjYWUwODIiLCJuYW1lIjoiQWxleGV5IFNhZnJvbm92In19LCJlZGl0b3JUeXBlIjowLCJ0eXBlIjoiZGVza3RvcCJ9.UYNppb17PyrszOMqgQbOq_BpF93EHcYgWxvNX2HGySQ",
type: "desktop",
file: {
folderId: 11240,
version: 2,
versionGroup: 2,
contentLength: "24.35 KB",
pureContentLength: 24932,
fileStatus: 1,
mute: false,
viewUrl:
"https://uzbekistan.onlyoffice.io/filehandler.ashx?action=download&fileid=653796",
webUrl:
"https://uzbekistan.onlyoffice.io/doceditor?fileid=653796&version=2",
fileType: 7,
fileExst: ".docx",
comment: "Edited",
thumbnailStatus: 2,
denyDownload: false,
denySharing: false,
viewAccessibility: {
ImageView: false,
MediaView: false,
WebView: true,
WebEdit: true,
WebReview: true,
WebCustomFilterEditing: false,
WebRestrictedEditing: false,
WebComment: true,
CoAuhtoring: true,
CanConvert: true,
MustConvert: false,
},
id: 653796,
rootFolderId: 11240,
canShare: true,
security: {
Read: true,
Comment: true,
FillForms: true,
Review: true,
Edit: true,
Delete: true,
CustomFilter: true,
Rename: true,
ReadHistory: true,
Lock: false,
EditHistory: true,
Copy: true,
Move: true,
Duplicate: true,
SubmitToFormGallery: false,
Download: true,
Convert: true,
},
title: "Новый документ.docx",
access: 0,
shared: false,
created: "2023-12-19T09:21:40.0000000+04:00",
createdBy: {
id: "7ea27dbc-e760-4832-bd23-960c46cae082",
displayName: "Alexey Safronov",
avatarSmall:
"/storage/userPhotos/root/7ea27dbc-e760-4832-bd23-960c46cae082_size_32-32.png?hash=1212195127",
profileUrl:
"https://uzbekistan.onlyoffice.io/accounts/view/alexey.safronov",
hasAvatar: true,
},
updated: "2023-12-21T12:34:38.0000000+04:00",
rootFolderType: 5,
updatedBy: {
id: "7ea27dbc-e760-4832-bd23-960c46cae082",
displayName: "Alexey Safronov",
avatarSmall:
"/storage/userPhotos/root/7ea27dbc-e760-4832-bd23-960c46cae082_size_32-32.png?hash=1212195127",
profileUrl:
"https://uzbekistan.onlyoffice.io/accounts/view/alexey.safronov",
hasAvatar: true,
},
},
};
export default function Home() {
function onDocumentReady(event: object): void {
throw new Error("Function not implemented.");
}
return (
<DocumentEditor
id={"docspace_editor"}
documentServerUrl={"https://asc.docs.teamlab.info"}
config={config}
height="700px"
width="100%"
events_onDocumentReady={onDocumentReady}
></DocumentEditor>
);
}

View File

View File

@ -0,0 +1,12 @@
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
// This function can be marked `async` if using `await` inside
export function middleware(request: NextRequest) {
return NextResponse.redirect(new URL("/doceditor", request.url));
}
// See "Matching Paths" below to learn more
export const config = {
matcher: "/",
};

View File

@ -0,0 +1,7 @@
.main {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
min-height: 100vh;
}

View File

@ -1,5 +1,23 @@
import Editor from "@/components/Editor";
// import {
// openEdit,
// // getSettingsFiles,
// // getShareFiles,
// } from "@docspace/common/api/editor";
import { getData } from "./actions";
import { redirect } from "next/navigation";
export default async function Home() {
redirect("/doceditor");
export default async function Page({
searchParams,
}: {
searchParams?: { [key: string]: string | undefined };
}) {
const { fileId } = searchParams || { fileId: undefined };
if (!fileId) return redirect("/error");
const config = await getData(fileId);
return <Editor config={config} />;
}

View File

@ -0,0 +1,26 @@
"use client";
import { DocumentEditor } from "@onlyoffice/document-editor-react";
import IConfig from "@onlyoffice/document-editor-react/dist/esm/model/config";
const Editor = ({ config }: { config: IConfig }) => {
const onDocumentReady = (event: object): void => {
throw new Error("Function not implemented.");
};
//console.log({ config });
const documentserverUrl = "http://192.168.1.65/ds-vpath"; //TODO: replace to api url
return (
<DocumentEditor
id={"docspace_editor"}
documentServerUrl={documentserverUrl}
config={config}
height="700px"
width="100%"
events_onDocumentReady={onDocumentReady}
></DocumentEditor>
);
};
export default Editor;

View File

@ -19,7 +19,8 @@
}
],
"paths": {
"@/*": ["./src/*"]
"@/*": ["./src/*"],
"PUBLIC_DIR/*": ["../../public/*"]
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],

View File

@ -1,5 +1,5 @@
{
"PORT": "6013",
"PORT": "5013",
"app": {
"appsettings": "../../../buildtools/config"
}

View File

@ -3034,6 +3034,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@docspace/doceditor@workspace:packages/doceditor"
dependencies:
"@onlyoffice/document-editor-react": ^1.3.0
"@types/node": ^20
"@types/react": ^18
"@types/react-dom": ^18
@ -4970,7 +4971,7 @@ __metadata:
languageName: node
linkType: hard
"@onlyoffice/document-editor-react@npm:1.3.0":
"@onlyoffice/document-editor-react@npm:1.3.0, @onlyoffice/document-editor-react@npm:^1.3.0":
version: 1.3.0
resolution: "@onlyoffice/document-editor-react@npm:1.3.0"
peerDependencies: