Merge pull request #232 from makeplane/sync/ce-ee

sync: merge conflicts need to be resolved
This commit is contained in:
sriram veeraghanta
2024-05-10 02:48:24 +05:30
committed by GitHub
43 changed files with 780 additions and 388 deletions

View File

@@ -1,2 +1,7 @@
# Public boards deploy URL
NEXT_PUBLIC_DEPLOY_URL="http://localhost/spaces"
NEXT_PUBLIC_API_BASE_URL=""
NEXT_PUBLIC_ADMIN_BASE_URL=""
NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode"
NEXT_PUBLIC_SPACE_BASE_URL=""
NEXT_PUBLIC_SPACE_BASE_PATH="/spaces"

View File

@@ -1,6 +1,6 @@
# ******************************************
# *****************************************************************************
# STAGE 1: Build the project
# ******************************************
# *****************************************************************************
FROM node:18-alpine AS builder
RUN apk add --no-cache libc6-compat
# Set working directory
@@ -11,17 +11,14 @@ COPY . .
RUN turbo prune --scope=web --docker
# ******************************************
# *****************************************************************************
# STAGE 2: Install dependencies & build the project
# ******************************************
# *****************************************************************************
# Add lockfile and package.json's of isolated subworkspace
FROM node:18-alpine AS installer
RUN apk add --no-cache libc6-compat
WORKDIR /app
ARG NEXT_PUBLIC_API_BASE_URL=""
ARG NEXT_PUBLIC_DEPLOY_URL=""
# First install the dependencies (as they change less often)
COPY .gitignore .gitignore
@@ -33,16 +30,29 @@ RUN yarn install --network-timeout 500000
COPY --from=builder /app/out/full/ .
COPY turbo.json turbo.json
ARG NEXT_PUBLIC_API_BASE_URL=""
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
ENV NEXT_PUBLIC_DEPLOY_URL=$NEXT_PUBLIC_DEPLOY_URL
ARG NEXT_PUBLIC_ADMIN_BASE_URL=""
ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_PATH=""
ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH
ARG NEXT_PUBLIC_SPACE_BASE_URL=""
ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL
ARG NEXT_PUBLIC_SPACE_BASE_PATH=""
ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH
ENV NEXT_TELEMETRY_DISABLED 1
ENV TURBO_TELEMETRY_DISABLED 1
RUN yarn turbo run build --filter=web
# ******************************************
# *****************************************************************************
# STAGE 3: Copy the project and start it
# ******************************************
# *****************************************************************************
FROM node:18-alpine AS runner
WORKDIR /app
@@ -56,12 +66,19 @@ COPY --from=installer /app/web/.next ./web/.next
COPY --from=installer /app/web/public ./web/public
ARG NEXT_PUBLIC_API_BASE_URL=""
ARG NEXT_PUBLIC_DEPLOY_URL=""
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
ENV NEXT_PUBLIC_DEPLOY_URL=$NEXT_PUBLIC_DEPLOY_URL
COPY start.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/start.sh
ARG NEXT_PUBLIC_ADMIN_BASE_URL=""
ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL
ARG NEXT_PUBLIC_ADMIN_BASE_PATH=""
ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH
ARG NEXT_PUBLIC_SPACE_BASE_URL=""
ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL
ARG NEXT_PUBLIC_SPACE_BASE_PATH=""
ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH
ENV NEXT_TELEMETRY_DISABLED 1
ENV TURBO_TELEMETRY_DISABLED 1

View File

@@ -16,6 +16,7 @@ import { ProjectLogo } from "@/components/project";
import { EIssueFilterType, EIssuesStoreType, ISSUE_DISPLAY_FILTERS_BY_LAYOUT } from "@/constants/issue";
import { EUserProjectRoles } from "@/constants/project";
// helpers
import { SPACE_BASE_PATH, SPACE_BASE_URL } from "@/helpers/common.helper";
import { calculateTotalFilters } from "@/helpers/filter.helper";
// hooks
import {
@@ -99,7 +100,8 @@ export const ProjectIssuesHeader: React.FC = observer(() => {
[workspaceSlug, projectId, updateFilters]
);
const deployUrl = process.env.NEXT_PUBLIC_DEPLOY_URL;
const DEPLOY_URL = SPACE_BASE_URL + SPACE_BASE_PATH;
const canUserCreateIssue =
currentProjectRole && [EUserProjectRoles.ADMIN, EUserProjectRoles.MEMBER].includes(currentProjectRole);
@@ -163,9 +165,9 @@ export const ProjectIssuesHeader: React.FC = observer(() => {
</Tooltip>
) : null}
</div>
{currentProjectDetails?.is_deployed && deployUrl && (
{currentProjectDetails?.is_deployed && DEPLOY_URL && (
<a
href={`${deployUrl}/${workspaceSlug}/${currentProjectDetails?.id}`}
href={`${DEPLOY_URL}/${workspaceSlug}/${currentProjectDetails?.id}`}
className="group flex items-center gap-1.5 rounded bg-custom-primary-100/10 px-2.5 py-1 text-xs font-medium text-custom-primary-100"
target="_blank"
rel="noopener noreferrer"

View File

@@ -1,19 +1,26 @@
import { FC } from "react";
import { observer } from "mobx-react";
import Image from "next/image";
import { Button } from "@plane/ui";
// helpers
import { ADMIN_BASE_URL, ADMIN_BASE_PATH } from "@/helpers/common.helper";
// hooks
// import { useInstance } from "@/hooks/store";
// images
import PlaneTakeOffImage from "@/public/plane-takeoff.png";
import BluePlaneLogoWithoutText from "public/plane-logos/blue-without-text.png";
export const InstanceNotReady: FC = () => {
export const InstanceNotReady: FC = observer(() => {
// hooks
// const { instance } = useInstance();
const planeGodModeUrl = `${process.env.NEXT_PUBLIC_GOD_MODE_URL}/god-mode/setup/?auth_enabled=0`;
const GOD_MODE_URL = encodeURI(ADMIN_BASE_URL + ADMIN_BASE_PATH + "setup/?auth_enabled=0");
return (
<div className="relative h-screen max-h-max w-full overflow-hidden overflow-y-auto flex flex-col">
<div className="flex-shrink-0 h-[100px]">
<div className="relative h-full container mx-auto px-5 lg:px-0 flex items-center justify-between gap-5 z-50">
<div className="flex items-center gap-x-2 py-10">
<div className="flex items-center gap-x-2 py-10">
<Image src={BluePlaneLogoWithoutText} height={30} width={30} alt="Plane Logo" />
<span className="text-2xl font-semibold sm:text-3xl">Plane</span>
</div>
@@ -30,7 +37,7 @@ export const InstanceNotReady: FC = () => {
</p>
</div>
<div>
<a href={planeGodModeUrl}>
<a href={GOD_MODE_URL}>
<Button size="lg" className="w-full">
Get started
</Button>
@@ -41,4 +48,4 @@ export const InstanceNotReady: FC = () => {
</div>
</div>
);
};
});

View File

@@ -10,7 +10,7 @@ import { IProject } from "@plane/types";
// ui
import { Button, Loader, ToggleSwitch, TOAST_TYPE, setToast } from "@plane/ui";
// hooks
import { useProjectPublish } from "@/hooks/store";
import { useInstance, useProjectPublish } from "@/hooks/store";
// store
import { IProjectPublishSettings, TProjectPublishViews } from "@/store/project/project-publish.store";
// types
@@ -54,14 +54,14 @@ const viewOptions: {
export const PublishProjectModal: React.FC<Props> = observer((props) => {
const { isOpen, project, onClose } = props;
// hooks
const { instance } = useInstance();
// states
const [isUnPublishing, setIsUnPublishing] = useState(false);
const [isUpdateRequired, setIsUpdateRequired] = useState(false);
let plane_deploy_url = process.env.NEXT_PUBLIC_DEPLOY_URL;
const plane_deploy_url = instance?.config?.space_base_url || "";
if (typeof window !== "undefined" && !plane_deploy_url)
plane_deploy_url = window.location.protocol + "//" + window.location.host + "/spaces";
// router
const router = useRouter();
const { workspaceSlug } = router.query;

View File

@@ -1,6 +1,14 @@
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
export const API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL || "";
export const ADMIN_BASE_URL = process.env.NEXT_PUBLIC_ADMIN_BASE_URL || "";
export const ADMIN_BASE_PATH = process.env.NEXT_PUBLIC_ADMIN_BASE_PATH || "";
export const SPACE_BASE_URL = process.env.NEXT_PUBLIC_SPACE_BASE_URL || "";
export const SPACE_BASE_PATH = process.env.NEXT_PUBLIC_SPACE_BASE_PATH || "";
export const debounce = (func: any, wait: number, immediate: boolean = false) => {
let timeout: any;
@@ -21,5 +29,3 @@ export const debounce = (func: any, wait: number, immediate: boolean = false) =>
};
export const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));
export const API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ? process.env.NEXT_PUBLIC_API_BASE_URL : "";

View File

@@ -31,7 +31,7 @@ const nextConfig = {
unoptimized: true,
},
async rewrites() {
return [
const rewrites = [
{
source: "/ingest/static/:path*",
destination: "https://us-assets.i.posthog.com/static/:path*",
@@ -40,11 +40,17 @@ const nextConfig = {
source: "/ingest/:path*",
destination: "https://us.i.posthog.com/:path*",
},
{
source: "/god-mode/:path*",
destination: `${process.env.NEXT_PUBLIC_GOD_MODE_URL || ""}/:path*`,
},
];
if (process.env.NEXT_PUBLIC_ADMIN_BASE_URL || process.env.NEXT_PUBLIC_ADMIN_BASE_PATH) {
const ADMIN_BASE_URL = process.env.NEXT_PUBLIC_ADMIN_BASE_URL || ""
const ADMIN_BASE_PATH = process.env.NEXT_PUBLIC_ADMIN_BASE_PATH || ""
const GOD_MODE_BASE_URL = ADMIN_BASE_URL + ADMIN_BASE_PATH
rewrites.push({
source: "/god-mode/:path*",
destination: `${GOD_MODE_BASE_URL}/:path*`,
})
}
return rewrites;
},
};