/* * Copyright (c) 2020 - present Cloudogu GmbH * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see https://www.gnu.org/licenses/. */ // import { storiesOf } from "@storybook/react"; // import * as React from "react"; // import styled from "styled-components"; // import { MemoryRouter } from "react-router-dom"; // import repository from "../../__resources__/repository"; // import ChangesetRow from "./ChangesetRow"; // import { five, four, one, three, two } from "../../__resources__/changesets"; // import { Binder, BinderContext } from "@scm-manager/ui-extensions"; // // @ts-ignore // import hitchhiker from "../../__resources__/hitchhiker.png"; // import { Person } from "../../avatar/Avatar"; // import { Changeset } from "@scm-manager/ui-types"; // import { Replacement, ShortcutDocsContextProvider } from "@scm-manager/ui-core"; // import ChangesetList from "./ChangesetList"; // // const Wrapper = styled.div` // margin: 25rem 4rem; // `; // // const robohash = (person: Person) => { // return `https://robohash.org/${person.mail}`; // }; // // const withAvatarFactory = (factory: (person: Person) => string, changeset: Changeset) => { // const binder = new Binder("changeset stories"); // binder.bind("avatar.factory", factory); // return ( // // // // ); // }; // // const withReplacements = ( // replacements: ((changeset: Changeset, value: string) => Replacement[])[], // changeset: Changeset // ) => { // const binder = new Binder("changeset stories"); // replacements.forEach((replacement) => binder.bind("changeset.description.tokens", replacement)); // return ( // // // // ); // }; // // function copy(input: T): T { // return JSON.parse(JSON.stringify(input)); // } // // storiesOf("Repositories/Changesets", module) // .addDecorator((story) => {story()}) // .addDecorator((storyFn) => {storyFn()}) // .add("Default", () => ) // .add("With Committer", () => ) // .add("With Committer and Co-Author", () => ) // .add("With multiple Co-Authors", () => ) // .add("With avatar", () => { // return withAvatarFactory(() => hitchhiker, three); // }) // .add("Commiter and Co-Authors with avatar", () => { // return withAvatarFactory(robohash, one); // }) // .add("Co-Authors with avatar", () => { // return withAvatarFactory(robohash, four); // }) // .add("Replacements", () => { // const link = HOG-42; // const mail = Arthur; // return withReplacements( // [ // () => [{ textToReplace: "HOG-42", replacement: link }], // () => [{ textToReplace: "arthur@guide.galaxy", replacement: mail }], // ], // five // ); // }) // .add("With unknown signature", () => { // const changeset = copy(three); // changeset.signatures = [ // { // keyId: "0x247E908C6FD35473", // type: "gpg", // status: "NOT_FOUND", // }, // ]; // return ; // }) // .add("With valid signature", () => { // const changeset = copy(three); // changeset.signatures = [ // { // keyId: "0x247E908C6FD35473", // type: "gpg", // status: "VERIFIED", // owner: "trillian", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // ]; // return ; // }) // .add("With unowned signature", () => { // const changeset = copy(three); // changeset.signatures = [ // { // keyId: "0x247E908C6FD35473", // type: "gpg", // status: "VERIFIED", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // ]; // return ; // }) // .add("With contactless signature", () => { // const changeset = copy(three); // changeset.signatures = [ // { // keyId: "0x247E908C6FD35473", // type: "gpg", // status: "VERIFIED", // owner: "trillian", // }, // ]; // return ; // }) // .add("With invalid signature", () => { // const changeset = copy(three); // changeset.signatures = [ // { // keyId: "0x247E908C6FD35473", // type: "gpg", // status: "INVALID", // owner: "trillian", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // ]; // return ; // }) // .add("With multiple signatures and invalid status", () => { // const changeset = copy(three); // changeset.signatures = [ // { // keyId: "0x912389FJIQW8W223", // type: "gpg", // status: "INVALID", // owner: "trillian", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // { // keyId: "0x247E908C6FD35473", // type: "gpg", // status: "VERIFIED", // owner: "trillian", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // { // keyId: "0x9123891239VFIA33", // type: "gpg", // status: "NOT_FOUND", // owner: "trillian", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // ]; // return ; // }) // .add("With multiple signatures and valid status", () => { // const changeset = copy(three); // changeset.signatures = [ // { // keyId: "0x912389FJIQW8W223", // type: "gpg", // status: "NOT_FOUND", // owner: "trillian", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // { // keyId: "0x247E908C6FD35473", // type: "gpg", // status: "VERIFIED", // owner: "trillian", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // { // keyId: "0x9123891239VFIA33", // type: "gpg", // status: "NOT_FOUND", // owner: "trillian", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // ]; // return ; // }) // .add("With multiple signatures and not found status", () => { // const changeset = copy(three); // changeset.signatures = [ // { // keyId: "0x912389FJIQW8W223", // type: "gpg", // status: "NOT_FOUND", // owner: "trillian", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // { // keyId: "0x9123891239VFIA33", // type: "gpg", // status: "NOT_FOUND", // owner: "trillian", // contacts: [ // { // name: "Tricia Marie McMilla", // mail: "trillian@hitchhiker.com", // }, // ], // }, // ]; // return ; // }) // .add("List with navigation", () => ( // // // // )); import React from "react"; import { MemoryRouter } from "react-router-dom"; import styled from "styled-components"; import type { Meta, StoryObj } from "@storybook/react"; import { Replacement, ShortcutDocsContextProvider } from "@scm-manager/ui-core"; import { Binder, BinderContext } from "@scm-manager/ui-extensions"; import { Changeset } from "@scm-manager/ui-types"; import repository from "../../__resources__/repository"; import { five, four, one, three, two } from "../../__resources__/changesets"; // @ts-ignore import hitchhiker from "../../__resources__/hitchhiker.png"; import { Person } from "../../avatar/Avatar"; import ChangesetRow from "./ChangesetRow"; import ChangesetList from "./ChangesetList"; const Wrapper = styled.div` margin: 2rem 4rem; `; const robohash = (person: Person) => `https://robohash.org/${person.mail}`; const withAvatarFactory = (factory: (person: Person) => string, changeset: Changeset) => { const binder = new Binder("changeset stories"); binder.bind("avatar.factory", factory); return ( ); }; const withReplacements = ( replacements: ((changeset: Changeset, value: string) => Replacement[])[], changeset: Changeset, ) => { const binder = new Binder("changeset stories"); replacements.forEach((replacement) => binder.bind("changeset.description.tokens", replacement)); return ( ); }; function copy(input: T): T { return JSON.parse(JSON.stringify(input)); } const meta: Meta = { title: "Repositories/Changesets", component: ChangesetRow, decorators: [ (Story) => {Story()}, (Story) => {Story()}, ], tags: ["autodocs"], }; export default meta; type Story = StoryObj; export const Default: Story = { args: { repository, changeset: three }, }; export const WithCommitter: Story = { args: { repository, changeset: two }, }; export const WithCommitterAndCoAuthor: Story = { args: { repository, changeset: one }, }; export const WithMultipleCoAuthors: Story = { args: { repository, changeset: four }, }; export const WithAvatar: Story = { render: () => withAvatarFactory(() => hitchhiker, three), }; export const CommitterAndCoAuthorsWithAvatar: Story = { render: () => withAvatarFactory(robohash, one), }; export const CoAuthorsWithAvatar: Story = { render: () => withAvatarFactory(robohash, four), }; export const Replacements: Story = { render: () => { const link = HOG-42; const mail = Arthur; return withReplacements( [ () => [{ textToReplace: "HOG-42", replacement: link }], () => [{ textToReplace: "arthur@guide.galaxy", replacement: mail }], ], five, ); }, }; export const WithUnknownSignature: Story = { render: () => { const changeset = copy(three); changeset.signatures = [{ keyId: "0x247E908C6FD35473", type: "gpg", status: "NOT_FOUND" }]; return ; }, }; export const WithValidSignature: Story = { render: () => { const changeset = copy(three); changeset.signatures = [ { keyId: "0x247E908C6FD35473", type: "gpg", status: "VERIFIED", owner: "trillian", contacts: [{ name: "Tricia Marie McMilla", mail: "trillian@hitchhiker.com" }], }, ]; return ; }, }; export const WithInvalidSignature: Story = { render: () => { const changeset = copy(three); changeset.signatures = [ { keyId: "0x247E908C6FD35473", type: "gpg", status: "INVALID", owner: "trillian", contacts: [{ name: "Tricia Marie McMilla", mail: "trillian@hitchhiker.com" }], }, ]; return ; }, }; export const WithMultipleSignaturesInvalid: Story = { name: "With Multiple Signatures (Invalid Status)", render: () => { const changeset = copy(three); changeset.signatures = [ { keyId: "0x912389FJIQW8W223", type: "gpg", status: "INVALID", owner: "trillian" }, { keyId: "0x247E908C6FD35473", type: "gpg", status: "VERIFIED", owner: "trillian" }, { keyId: "0x9123891239VFIA33", type: "gpg", status: "NOT_FOUND", owner: "trillian" }, ]; return ; }, }; export const WithMultipleSignaturesValid: Story = { name: "With Multiple Signatures (Valid Status)", render: () => { const changeset = copy(three); changeset.signatures = [ { keyId: "0x912389FJIQW8W223", type: "gpg", status: "NOT_FOUND", owner: "trillian" }, { keyId: "0x247E908C6FD35473", type: "gpg", status: "VERIFIED", owner: "trillian" }, { keyId: "0x9123891239VFIA33", type: "gpg", status: "NOT_FOUND", owner: "trillian" }, ]; return ; }, }; export const ListWithNavigation: Story = { name: "List With Navigation", render: () => ( ), };