Merge branch 'develop' of https://github.com/makeplane/plane into feat/csv_exporter

This commit is contained in:
srinivaspendem 2023-08-22 17:40:42 +05:30
commit 678e20074b
11 changed files with 35 additions and 36 deletions

View File

@ -68,7 +68,7 @@ def create_zip_file(files):
def upload_to_s3(zip_file, workspace_id, token_id, slug): def upload_to_s3(zip_file, workspace_id, token_id, slug):
s3 = boto3.client( s3 = boto3.client(
"s3", "s3",
region_name="ap-south-1", region_name=settings.AWS_REGION,
aws_access_key_id=settings.AWS_ACCESS_KEY_ID, aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY, aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
config=Config(signature_version="s3v4"), config=Config(signature_version="s3v4"),

View File

@ -270,16 +270,18 @@ export const MyIssuesView: React.FC<Props> = ({
? "You have not created any issue yet." ? "You have not created any issue yet."
: "You have not subscribed to any issue yet.", : "You have not subscribed to any issue yet.",
description: "Keep track of your work in a single place.", description: "Keep track of your work in a single place.",
primaryButton: { primaryButton: filters.subscriber
icon: <PlusIcon className="h-4 w-4" />, ? undefined
text: "New Issue", : {
onClick: () => { icon: <PlusIcon className="h-4 w-4" />,
const e = new KeyboardEvent("keydown", { text: "New Issue",
key: "c", onClick: () => {
}); const e = new KeyboardEvent("keydown", {
document.dispatchEvent(e); key: "c",
}, });
}, document.dispatchEvent(e);
},
},
}} }}
handleOnDragEnd={handleOnDragEnd} handleOnDragEnd={handleOnDragEnd}
handleIssueAction={handleIssueAction} handleIssueAction={handleIssueAction}

View File

@ -9,7 +9,6 @@ import { DragDropContext, Draggable, DropResult, Droppable } from "react-beautif
import { Disclosure, Transition } from "@headlessui/react"; import { Disclosure, Transition } from "@headlessui/react";
// hooks // hooks
import useToast from "hooks/use-toast"; import useToast from "hooks/use-toast";
import useTheme from "hooks/use-theme";
import useUserAuth from "hooks/use-user-auth"; import useUserAuth from "hooks/use-user-auth";
import useProjects from "hooks/use-projects"; import useProjects from "hooks/use-projects";
// components // components
@ -42,18 +41,15 @@ export const ProjectSidebarList: FC = () => {
const containerRef = useRef<HTMLDivElement | null>(null); const containerRef = useRef<HTMLDivElement | null>(null);
const router = useRouter(); const router = useRouter();
const { workspaceSlug, projectId } = router.query; const { workspaceSlug } = router.query;
const { user } = useUserAuth(); const { user } = useUserAuth();
const { collapsed: sidebarCollapse } = useTheme();
const { setToastAlert } = useToast(); const { setToastAlert } = useToast();
const { projects: allProjects } = useProjects(); const { projects: allProjects } = useProjects();
const joinedProjects = allProjects?.filter((p) => p.sort_order); const joinedProjects = allProjects?.filter((p) => p.sort_order);
const favoriteProjects = allProjects?.filter((p) => p.is_favorite); const favoriteProjects = allProjects?.filter((p) => p.is_favorite);
const otherProjects = allProjects?.filter((p) => p.sort_order === null);
const orderedJoinedProjects: IProject[] | undefined = joinedProjects const orderedJoinedProjects: IProject[] | undefined = joinedProjects
? orderArrayBy(joinedProjects, "sort_order", "ascending") ? orderArrayBy(joinedProjects, "sort_order", "ascending")
@ -300,10 +296,10 @@ export const ProjectSidebarList: FC = () => {
</Droppable> </Droppable>
</DragDropContext> </DragDropContext>
{allProjects && allProjects.length === 0 && ( {joinedProjects && joinedProjects.length === 0 && (
<button <button
type="button" type="button"
className="flex w-full items-center gap-2 px-3 py-2 text-sm text-custom-sidebar-text-200 mt-5" className="flex w-full items-center gap-2 px-3 text-sm text-custom-sidebar-text-200"
onClick={() => { onClick={() => {
const e = new KeyboardEvent("keydown", { const e = new KeyboardEvent("keydown", {
key: "p", key: "p",

View File

@ -26,7 +26,9 @@ const WorkspaceProjectPage = observer(() => {
const { workspace_slug, project_slug } = routerParams as { workspace_slug: string; project_slug: string }; const { workspace_slug, project_slug } = routerParams as { workspace_slug: string; project_slug: string };
const board = const board =
routerSearchparams && routerSearchparams.get("board") != null && (routerSearchparams.get("board") as TIssueBoardKeys | ""); routerSearchparams &&
routerSearchparams.get("board") != null &&
(routerSearchparams.get("board") as TIssueBoardKeys | "");
// updating default board view when we are in the issues page // updating default board view when we are in the issues page
useEffect(() => { useEffect(() => {

View File

@ -1,5 +1,5 @@
/** @type {import('next').NextConfig} */ /** @type {import('next').NextConfig} */
const path = require('path') const path = require("path");
const nextConfig = { const nextConfig = {
reactStrictMode: false, reactStrictMode: false,
@ -8,7 +8,7 @@ const nextConfig = {
outputFileTracingRoot: path.join(__dirname, "../../"), outputFileTracingRoot: path.join(__dirname, "../../"),
appDir: true, appDir: true,
}, },
output: 'standalone' output: "standalone",
}; };
module.exports = nextConfig; module.exports = nextConfig;

View File

@ -3,14 +3,12 @@ import axios from "axios";
// js cookie // js cookie
import Cookies from "js-cookie"; import Cookies from "js-cookie";
const base_url: string | null = "http://localhost:8000";
abstract class APIService { abstract class APIService {
protected baseURL: string; protected baseURL: string;
protected headers: any = {}; protected headers: any = {};
constructor(baseURL: string) { constructor(_baseURL: string) {
this.baseURL = base_url ? base_url : baseURL; this.baseURL = _baseURL;
} }
setRefreshToken(token: string) { setRefreshToken(token: string) {

View File

@ -1,11 +1,9 @@
// services // services
import APIService from "services/api.service"; import APIService from "services/api.service";
const { NEXT_PUBLIC_API_BASE_URL } = process.env;
class IssueService extends APIService { class IssueService extends APIService {
constructor() { constructor() {
super(NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000"); super(process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
} }
async getPublicIssues(workspace_slug: string, project_slug: string): Promise<any> { async getPublicIssues(workspace_slug: string, project_slug: string): Promise<any> {

View File

@ -1,11 +1,9 @@
// services // services
import APIService from "services/api.service"; import APIService from "services/api.service";
const { NEXT_PUBLIC_API_BASE_URL } = process.env;
class ProjectService extends APIService { class ProjectService extends APIService {
constructor() { constructor() {
super(NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000"); super(process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
} }
async getProjectSettingsAsync(workspace_slug: string, project_slug: string): Promise<any> { async getProjectSettingsAsync(workspace_slug: string, project_slug: string): Promise<any> {

View File

@ -1,11 +1,9 @@
// services // services
import APIService from "services/api.service"; import APIService from "services/api.service";
const { NEXT_PUBLIC_API_BASE_URL } = process.env;
class UserService extends APIService { class UserService extends APIService {
constructor() { constructor() {
super(NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000"); super(process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
} }
async currentUser(): Promise<any> { async currentUser(): Promise<any> {

View File

@ -64,7 +64,7 @@ services:
container_name: planedeploy container_name: planedeploy
build: build:
context: . context: .
dockerfile: ./apps/space/Dockerfile.space space dockerfile: ./apps/space/Dockerfile.space
args: args:
NEXT_PUBLIC_API_BASE_URL: http://localhost:8000 NEXT_PUBLIC_API_BASE_URL: http://localhost:8000
restart: always restart: always

View File

@ -6558,13 +6558,20 @@ prosemirror-menu@^1.2.1:
prosemirror-history "^1.0.0" prosemirror-history "^1.0.0"
prosemirror-state "^1.0.0" prosemirror-state "^1.0.0"
prosemirror-model@1.18.1, prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.18.1, prosemirror-model@^1.19.0, prosemirror-model@^1.8.1: prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.18.1, prosemirror-model@^1.8.1:
version "1.18.1" version "1.18.1"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.18.1.tgz#1d5d6b6de7b983ee67a479dc607165fdef3935bd" resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.18.1.tgz#1d5d6b6de7b983ee67a479dc607165fdef3935bd"
integrity sha512-IxSVBKAEMjD7s3n8cgtwMlxAXZrC7Mlag7zYsAKDndAqnDScvSmp/UdnRTV/B33lTCVU3CCm7dyAn/rVVD0mcw== integrity sha512-IxSVBKAEMjD7s3n8cgtwMlxAXZrC7Mlag7zYsAKDndAqnDScvSmp/UdnRTV/B33lTCVU3CCm7dyAn/rVVD0mcw==
dependencies: dependencies:
orderedmap "^2.0.0" orderedmap "^2.0.0"
prosemirror-model@^1.19.0:
version "1.19.3"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.19.3.tgz#f0d55285487fefd962d0ac695f716f4ec6705006"
integrity sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ==
dependencies:
orderedmap "^2.0.0"
prosemirror-schema-basic@^1.2.0: prosemirror-schema-basic@^1.2.0:
version "1.2.2" version "1.2.2"
resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz#6695f5175e4628aab179bf62e5568628b9cfe6c7" resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz#6695f5175e4628aab179bf62e5568628b9cfe6c7"