Skip to content
This repository was archived by the owner on Oct 11, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
1100067
Create first prototype thread renderer
Feb 12, 2019
dd5a254
Create ThreadRenderer component
Feb 12, 2019
1e1f167
Add embed support to thread renderer
Feb 12, 2019
fd1473f
Add support for links and mentions back
Feb 12, 2019
ce5a936
Fix paragraph rendering and render h3s
Feb 12, 2019
84f9ec0
Code cleanup
Feb 12, 2019
0cb6f95
Flowtype keys
Feb 12, 2019
61be799
Fix codeblock styling
Feb 12, 2019
3fbd467
Remove console.log
Feb 12, 2019
3c079df
Render images
Feb 12, 2019
0695e17
Delete rich-text-editor import from composer
Feb 12, 2019
9520f0c
Use ThreadRenderer in ThreadDetail
Feb 12, 2019
806858c
Delete unused rich-text-editor and draft-js-plugins-editor components
Feb 12, 2019
243347f
Move thread composer inputs to separate component
Feb 12, 2019
9cbdc26
Remove console.log
Feb 12, 2019
4ba6a6b
Make plaintext thread editing work!!!
Feb 12, 2019
68c5f47
Remove draftjs CSS
Feb 12, 2019
4bc03b7
Remove unnecessary conversion to draftjs for emoji messages'
Feb 12, 2019
6728ea7
Remove usage of KeyBindingUtil from thread composer
Feb 12, 2019
51f3d3a
Remove unused imports to draft-utils
Feb 12, 2019
c4f92cd
Remove last usage of draft-utils/index.js in src/
Feb 12, 2019
7ab795c
Add syntax highlighting back
Feb 13, 2019
c2277d5
remove console.log
Feb 18, 2019
ae7c3ba
Merge branch 'alpha' into thread-renderer
Feb 18, 2019
8ceab44
Fix old links
Feb 21, 2019
7f40004
Fix e2e test
Feb 21, 2019
1382468
Fix flow
Feb 21, 2019
c2de592
Fix data-cy selector in action bar spec
Feb 21, 2019
24255b8
Polish editor layout in editing mode
brianlovin Feb 21, 2019
95eb358
Clean up block rendering
Feb 22, 2019
0fa35d2
Clean up block rendering
Feb 22, 2019
c990991
Log GraphQL error stack trace in development
Feb 22, 2019
8a1989c
Fix deleting thread body on edit
Feb 22, 2019
34bd866
Clean up cmd+esc handling
Feb 22, 2019
9589812
Layout and overflow fixes abound
brianlovin Feb 22, 2019
36a0f96
Show fenced code blocks on thread edit
Feb 25, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions api/mutations/thread/editThread.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// @flow
const debug = require('debug')('api:mutations:edit-thread');
import type { GraphQLContext } from '../../';
import type { EditThreadInput } from '../../models/thread';
import UserError from '../../utils/UserError';
Expand All @@ -7,6 +8,7 @@ import { getThreads, editThread } from '../../models/thread';
import { getUserPermissionsInCommunity } from '../../models/usersCommunities';
import { getUserPermissionsInChannel } from '../../models/usersChannels';
import { isAuthedResolver as requireAuth } from '../../utils/permissions';
import processThreadContent from 'shared/draft-utils/process-thread-content';
import { events } from 'shared/analytics';
import { trackQueue } from 'shared/bull/queues';
import {
Expand Down Expand Up @@ -83,6 +85,8 @@ export default requireAuth(async (_: any, args: Input, ctx: GraphQLContext) => {
);
}

input.content.body = processThreadContent('TEXT', input.content.body || '');

/*
When threads are sent to the client, all image urls are signed and proxied
via imgix. If a user edits the thread, we have to restore all image upload
Expand Down Expand Up @@ -130,6 +134,7 @@ export default requireAuth(async (_: any, args: Input, ctx: GraphQLContext) => {
});
}

debug('store new body to database:', initialBody);
const newInput = Object.assign({}, input, {
...input,
content: {
Expand Down
4 changes: 4 additions & 0 deletions api/utils/create-graphql-error-formatter.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ const errorPath = error => {
const logGraphQLError = (req, error) => {
debug('---GraphQL Error---');
debug(error);
error &&
error.extensions &&
error.extensions.exception &&
debug(error.extensions.exception.stacktrace.join('\n'));
if (req) {
debug(collectQueries(req.body.query));
debug('variables', JSON.stringify(req.body.variables || {}));
Expand Down
8 changes: 4 additions & 4 deletions cypress/integration/thread/action_bar_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,8 @@ describe('action bar renders', () => {
cy.get('[data-cy="thread-dropdown-edit"]').click();
cy.get('[data-cy="save-thread-edit-button"]').should('be.visible');
const title = 'Some new thread';
cy.get('[data-cy="rich-text-editor"].markdown').should('be.visible');
cy.get('[data-cy="thread-editor-title-input"]')
cy.get('[data-cy="rich-text-editor"]').should('be.visible');
cy.get('[data-cy="composer-title-input"]')
.clear()
.type(title);
cy.get('[data-cy="save-thread-edit-button"]').click();
Expand All @@ -201,8 +201,8 @@ describe('action bar renders', () => {
cy.get('[data-cy="thread-dropdown-edit"]').click();
cy.get('[data-cy="save-thread-edit-button"]').should('be.visible');
const originalTitle = 'The first thread! 🎉';
cy.get('[data-cy="rich-text-editor"].markdown').should('be.visible');
cy.get('[data-cy="thread-editor-title-input"]')
cy.get('[data-cy="rich-text-editor"]').should('be.visible');
cy.get('[data-cy="composer-title-input"]')
.clear()
.type(originalTitle);
cy.get('[data-cy="save-thread-edit-button"]').click();
Expand Down
214 changes: 214 additions & 0 deletions flow-typed/npm/prism-react-renderer_vx.x.x.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
// flow-typed signature: 3987fe684d034fe6822d30ca25b56da6
// flow-typed version: <<STUB>>/prism-react-renderer_vx.x.x/flow_v0.66.0

/**
* This is an autogenerated libdef stub for:
*
* 'prism-react-renderer'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/

declare module 'prism-react-renderer' {
declare module.exports: any;
}

/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'prism-react-renderer/es/components/Highlight' {
declare module.exports: any;
}

declare module 'prism-react-renderer/es/defaultProps' {
declare module.exports: any;
}

declare module 'prism-react-renderer/es/index' {
declare module.exports: any;
}

declare module 'prism-react-renderer/es/types' {
declare module.exports: any;
}

declare module 'prism-react-renderer/es/utils/normalizeTokens' {
declare module.exports: any;
}

declare module 'prism-react-renderer/es/utils/themeToDict' {
declare module.exports: any;
}

declare module 'prism-react-renderer/es/vendor/prism/includeLangs' {
declare module.exports: any;
}

declare module 'prism-react-renderer/es/vendor/prism/index' {
declare module.exports: any;
}

declare module 'prism-react-renderer/es/vendor/prism/prism-core' {
declare module.exports: any;
}

declare module 'prism-react-renderer/lib/components/Highlight' {
declare module.exports: any;
}

declare module 'prism-react-renderer/lib/defaultProps' {
declare module.exports: any;
}

declare module 'prism-react-renderer/lib/index' {
declare module.exports: any;
}

declare module 'prism-react-renderer/lib/types' {
declare module.exports: any;
}

declare module 'prism-react-renderer/lib/utils/normalizeTokens' {
declare module.exports: any;
}

declare module 'prism-react-renderer/lib/utils/themeToDict' {
declare module.exports: any;
}

declare module 'prism-react-renderer/lib/vendor/prism/includeLangs' {
declare module.exports: any;
}

declare module 'prism-react-renderer/lib/vendor/prism/index' {
declare module.exports: any;
}

declare module 'prism-react-renderer/lib/vendor/prism/prism-core' {
declare module.exports: any;
}

declare module 'prism-react-renderer/themes/dracula' {
declare module.exports: any;
}

declare module 'prism-react-renderer/themes/duotoneDark' {
declare module.exports: any;
}

declare module 'prism-react-renderer/themes/duotoneLight' {
declare module.exports: any;
}

declare module 'prism-react-renderer/themes/nightOwl' {
declare module.exports: any;
}

declare module 'prism-react-renderer/themes/oceanicNext' {
declare module.exports: any;
}

declare module 'prism-react-renderer/themes/shadesOfPurple' {
declare module.exports: any;
}

declare module 'prism-react-renderer/themes/ultramin' {
declare module.exports: any;
}

declare module 'prism-react-renderer/themes/vsDark' {
declare module.exports: any;
}

declare module 'prism-react-renderer/themes/vsDarkPlus' {
declare module.exports: any;
}

// Filename aliases
declare module 'prism-react-renderer/es/components/Highlight.js' {
declare module.exports: $Exports<'prism-react-renderer/es/components/Highlight'>;
}
declare module 'prism-react-renderer/es/defaultProps.js' {
declare module.exports: $Exports<'prism-react-renderer/es/defaultProps'>;
}
declare module 'prism-react-renderer/es/index.js' {
declare module.exports: $Exports<'prism-react-renderer/es/index'>;
}
declare module 'prism-react-renderer/es/types.js' {
declare module.exports: $Exports<'prism-react-renderer/es/types'>;
}
declare module 'prism-react-renderer/es/utils/normalizeTokens.js' {
declare module.exports: $Exports<'prism-react-renderer/es/utils/normalizeTokens'>;
}
declare module 'prism-react-renderer/es/utils/themeToDict.js' {
declare module.exports: $Exports<'prism-react-renderer/es/utils/themeToDict'>;
}
declare module 'prism-react-renderer/es/vendor/prism/includeLangs.js' {
declare module.exports: $Exports<'prism-react-renderer/es/vendor/prism/includeLangs'>;
}
declare module 'prism-react-renderer/es/vendor/prism/index.js' {
declare module.exports: $Exports<'prism-react-renderer/es/vendor/prism/index'>;
}
declare module 'prism-react-renderer/es/vendor/prism/prism-core.js' {
declare module.exports: $Exports<'prism-react-renderer/es/vendor/prism/prism-core'>;
}
declare module 'prism-react-renderer/lib/components/Highlight.js' {
declare module.exports: $Exports<'prism-react-renderer/lib/components/Highlight'>;
}
declare module 'prism-react-renderer/lib/defaultProps.js' {
declare module.exports: $Exports<'prism-react-renderer/lib/defaultProps'>;
}
declare module 'prism-react-renderer/lib/index.js' {
declare module.exports: $Exports<'prism-react-renderer/lib/index'>;
}
declare module 'prism-react-renderer/lib/types.js' {
declare module.exports: $Exports<'prism-react-renderer/lib/types'>;
}
declare module 'prism-react-renderer/lib/utils/normalizeTokens.js' {
declare module.exports: $Exports<'prism-react-renderer/lib/utils/normalizeTokens'>;
}
declare module 'prism-react-renderer/lib/utils/themeToDict.js' {
declare module.exports: $Exports<'prism-react-renderer/lib/utils/themeToDict'>;
}
declare module 'prism-react-renderer/lib/vendor/prism/includeLangs.js' {
declare module.exports: $Exports<'prism-react-renderer/lib/vendor/prism/includeLangs'>;
}
declare module 'prism-react-renderer/lib/vendor/prism/index.js' {
declare module.exports: $Exports<'prism-react-renderer/lib/vendor/prism/index'>;
}
declare module 'prism-react-renderer/lib/vendor/prism/prism-core.js' {
declare module.exports: $Exports<'prism-react-renderer/lib/vendor/prism/prism-core'>;
}
declare module 'prism-react-renderer/themes/dracula.js' {
declare module.exports: $Exports<'prism-react-renderer/themes/dracula'>;
}
declare module 'prism-react-renderer/themes/duotoneDark.js' {
declare module.exports: $Exports<'prism-react-renderer/themes/duotoneDark'>;
}
declare module 'prism-react-renderer/themes/duotoneLight.js' {
declare module.exports: $Exports<'prism-react-renderer/themes/duotoneLight'>;
}
declare module 'prism-react-renderer/themes/nightOwl.js' {
declare module.exports: $Exports<'prism-react-renderer/themes/nightOwl'>;
}
declare module 'prism-react-renderer/themes/oceanicNext.js' {
declare module.exports: $Exports<'prism-react-renderer/themes/oceanicNext'>;
}
declare module 'prism-react-renderer/themes/shadesOfPurple.js' {
declare module.exports: $Exports<'prism-react-renderer/themes/shadesOfPurple'>;
}
declare module 'prism-react-renderer/themes/ultramin.js' {
declare module.exports: $Exports<'prism-react-renderer/themes/ultramin'>;
}
declare module 'prism-react-renderer/themes/vsDark.js' {
declare module.exports: $Exports<'prism-react-renderer/themes/vsDark'>;
}
declare module 'prism-react-renderer/themes/vsDarkPlus.js' {
declare module.exports: $Exports<'prism-react-renderer/themes/vsDarkPlus'>;
}
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@
"passport-google-oauth2": "^0.1.6",
"passport-twitter": "^1.0.4",
"pre-commit": "^1.2.2",
"prism-react-renderer": "^0.1.5",
"prismjs": "^1.15.0",
"query-string": "5.1.1",
"raf": "^3.4.0",
Expand Down
4 changes: 3 additions & 1 deletion shared/clients/draft-js/message/types.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ export type KeyObj = {

export type KeysObj = {
keys: string[],
data?: Object,
};

export type DataObj = {
url: string,
url?: string,
href?: string,
};
Loading