Fetch comments

The plugin fetches the comments associated with the current page and adds them to the UI.

Contents

Fetch comments

Get a data identifier handle

The plugin fetches a data identifier handle for the appendable data associated with the current page.

POST /data-id/appendable-data

controller.js

window.safeDataId.getAppendableDataHandle(this._authToken, this._getLocation())

The name of the appendable data is based on the URL of the current page.

controller.js

_getLocation () {
  if (this._isDevMode() && this._data.user.dns) {
    return `comments-dev-${this._data.user.dns}/${window.location.pathname}`
  }
  return `${this._hostName}/${window.location.pathname}`
}

Example

blog.example//post.html

The actual name of the appendable data is the hash of _getLocation().

Get an appendable data handle

The plugin fetches an appendable data handle using the data identifier handle previously obtained.

GET /appendable-data/handle/:dataIdHandle

controller.js

window.safeAppendableData.getHandle(
    this._authToken, dataHandleId)

Get the metadata of the appendable data

The plugin fetches the metadata of the appendable data using the appendable data handle. The length of the appendable data represents the number of comments for the current page.

GET /appendable-data/metadata/:handleId

controller.js

window.safeAppendableData.getMetadata(
    this._authToken, this._currentPostHandleId)

If the data length is 0, it means that the current page doesn't have any comments.

Iterate through the appendable data

If the data length is greater than 0, the plugin fetches all the comments contained inside the appendable data.

Get a data identifier handle from the appendable data

The plugin fetches a data identifier handle from the appendable data based on the current index.

GET /appendable-data/:handleId/:index

controller.js

window.safeAppendableData.getDataIdAt(
    this._authToken, this._currentPostHandleId, index)

Permanent comments

If the current page is using the Permanent Comments Plugin, the plugin will expect the comments inside the appendable data to be stored as immutable data.

Get an immutable data reader handle

The plugin fetches the data map of the comment using the data identifier handle of the current comment.

GET /immutable-data/reader/:handleId

controller.js

window.safeImmutableData.getReaderHandle(this._authToken, address)

The API returns an immutable data reader handle.

Read the immutable data

The plugin reads the immutable data representing the comment using the immutable data reader handle.

GET /immutable-data/:handleId

controller.js

window.safeImmutableData.read(this._authToken, handleId)

Drop the immutable data reader handle

The plugin drops the immutable data reader handle.

DELETE /immutable-data/reader/:handleId

controller.js

window.safeImmutableData.dropReader(this._authToken, hId)

Editable comments

If the current page is using the Editable Comments Plugin, the plugin will expect the comments inside the appendable data to be stored as structured data.

Get a structured data handle

The plugin fetches a structured data handle using the data identifier handle of the current comment.

GET /structured-data/handle/:dataIdHandle

controller.js

window.safeStructuredData.getHandle(this._authToken, address)

Fetch the structured data

The plugin fetches the content of the structured data using the structured data handle.

GET /structured-data/:handleId/:version?

controller.js

window.safeStructuredData.readData(this._authToken, payload.handleId)

Drop the structured data handle

The plugin drops the structured data handle of the current comment.

DELETE /structured-data/handle/:handleId

controller.js

window.safeStructuredData.dropHandle(this._authToken, hId)

Drop the data identifier handle

The plugin drops the data identifier handle of the current comment.

DELETE /data-id/:handleId

controller.js

window.safeDataId.dropHandle(this._authToken, dataIdHandle)

The plugin continues iterating through the appendable data until all the comments it contains have been fetched. The plugin then sorts them by time and adds them to the UI.

Drop the data identifier handle for appendable data

The plugin drops the data identifier handle of the appendable data associated with the current page.

DELETE /data-id/:handleId

controller.js

window.safeDataId.dropHandle(this._authToken, dataIdHandle)

Last updated

Was this helpful?