Skip to main content
Version: 1.x.x

Comments

quip.apps.Record.prototype​

supportsComments​

Function() => boolean

Override this to return whether this Record supports commenting. By default, this returns false.

note

This has no effect when overridden in the RootRecord. In order to control whether commenting is available on the app as a whole, please see the disable_app_level_comments field in the app manifest.

getDom​

Function() => HTMLElement

Override this method to return the DOM node that represents this Record. This is required if this Record supports comments, as this DOM node will be used to highlight the Record when showing the corresponding comments.

showComments​

Function(id: string) => void

Sends a message to the host to show the comments UI for the given Record ID.

getCommentCount​

Function() => number

Returns the number of comments on this record

listenToComments​

Function(listener: (record: quip.apps.Record) => void) => void

Subscribe to changes in the comments associated with this Record ID.

unlistenToComments​

Function(listener: (record: quip.apps.Record) => void) => void

Unsubscribe from changes to the comments associated with this Record.

Example​


class RootRecord extends quip.apps.RootRecord {
static getProperties = () => ({
commentableRecord: CommentableRecord,
})

static getDefaultProperties = () => ({
commentableRecord: {},
})

getCommentableRecord = () => this.get("commentableRecord") as CommentableRecord
}

quip.apps.registerClass(RootRecord, "root-record");

class CommentableRecord extends quip.apps.Record {
static getProperties = () => ({})

private node: HTMLElement

getDom() {
return this.node;
}

setDom(node: HTMLElement) {
this.node = node;
}

supportsComments() {
return true;
}
}

quip.apps.registerClass(CommentableRecord, "commentable-record");

interface RootProps {
rootRecord: RootRecord
}

class Root extends React.Component<RootProps> {
render() {
const {rootRecord} = this.props;
const commentableRecord = rootRecord.getCommentableRecord();
return (
<div ref={(c) => commentableRecord.setDom(c)}>
Comment
<quip.apps.ui.CommentsTrigger
record={commentableRecord}
showEmpty={true}
/>
</div>
);
}
}

quip.apps.initialize({
initializationCallback: (root, params) => {
const rootRecord = quip.apps.getRootRecord() as RootRecord;
ReactDOM.render(<Root rootRecord={rootRecord}/>, root);
},
});