budibase/packages/frontend-core/src/api/rowActions.js

91 lines
2.3 KiB
JavaScript
Raw Normal View History

export const buildRowActionEndpoints = API => ({
/**
* Gets the available row actions for a table.
* @param tableId the ID of the table
*/
fetch: async tableId => {
const res = await API.get({
url: `/api/tables/${tableId}/actions`,
})
return res?.actions || {}
},
/**
* Creates a row action.
* @param name the name of the row action
* @param tableId the ID of the table
*/
create: async ({ name, tableId }) => {
return await API.post({
url: `/api/tables/${tableId}/actions`,
body: {
name,
},
})
},
/**
* Updates a row action.
* @param name the new name of the row action
* @param tableId the ID of the table
* @param rowActionId the ID of the row action to update
*/
update: async ({ tableId, rowActionId, name }) => {
return await API.put({
url: `/api/tables/${tableId}/actions/${rowActionId}`,
body: {
name,
},
})
},
/**
* Deletes a row action.
* @param tableId the ID of the table
* @param rowActionId the ID of the row action to delete
*/
delete: async ({ tableId, rowActionId }) => {
return await API.delete({
url: `/api/tables/${tableId}/actions/${rowActionId}`,
})
},
/**
* Enables a row action for a certain view
* @param tableId the ID of the parent table
* @param rowActionId the ID of the row action
* @param viewId the ID of the view
*/
enableView: async ({ tableId, rowActionId, viewId }) => {
return await API.post({
url: `/api/tables/${tableId}/actions/${rowActionId}/permissions/${viewId}`,
})
},
/**
* Disables a row action for a certain view
* @param tableId the ID of the parent table
* @param rowActionId the ID of the row action
* @param viewId the ID of the view
*/
disableView: async ({ tableId, rowActionId, viewId }) => {
return await API.delete({
url: `/api/tables/${tableId}/actions/${rowActionId}/permissions/${viewId}`,
})
},
/**
* Triggers a row action.
* @param tableId the ID of the table
* @param rowActionId the ID of the row action to trigger
*/
trigger: async ({ sourceId, rowActionId, rowId }) => {
return await API.post({
url: `/api/tables/${sourceId}/actions/${rowActionId}/trigger`,
body: {
rowId,
},
})
},
})