feat(communities): integrate token permissions pending state

closes: #11852
This commit is contained in:
Patryk Osmaczko 2023-08-23 10:51:41 +02:00 committed by osmaczko
parent 5b3b673eca
commit 720f6884b8
10 changed files with 105 additions and 69 deletions

View File

@ -812,7 +812,8 @@ proc updateTokenPermissionModel*(self: Module, permissions: Table[string, CheckP
updatedTokenCriteriaItems,
tokenPermissionItem.getChatList().getItems(),
tokenPermissionItem.isPrivate,
permissionSatisfied
permissionSatisfied,
tokenPermissionItem.state
)
self.view.tokenPermissionsModel().updateItem(id, updatedTokenPermissionItem)

View File

@ -592,7 +592,8 @@ proc applyPermissionResponse*(self: Module, communityId: string, permissions: Ta
updatedTokenCriteriaItems,
tokenPermissionItem.getChatList().getItems(),
tokenPermissionItem.isPrivate,
permissionSatisfied
permissionSatisfied,
tokenPermissionItem.state
)
self.view.spectatedCommunityPermissionModel.updateItem(id, updatedTokenPermissionItem)

View File

@ -14,6 +14,7 @@ type
chatList*: TokenPermissionChatListModel
isPrivate*: bool
tokenCriteriaMet*: bool
state*: TokenPermissionState
proc `$`*(self: TokenPermissionItem): string =
result = fmt"""TokenPermissionItem(
@ -27,7 +28,8 @@ proc initTokenPermissionItem*(
tokenCriteria: seq[TokenCriteriaItem],
chatList: seq[TokenPermissionChatListItem],
isPrivate: bool,
tokenCriteriaMet: bool
tokenCriteriaMet: bool,
state: TokenPermissionState
): TokenPermissionItem =
result.id = id
result.`type` = `type`
@ -35,6 +37,7 @@ proc initTokenPermissionItem*(
result.chatList = newTokenPermissionChatListModel()
result.isPrivate = isPrivate
result.tokenCriteriaMet = tokenCriteriaMet
result.state = state
for tcItem in tokenCriteria:
result.tokenCriteria.addItem(tcItem)
@ -63,6 +66,9 @@ proc getIsPrivate*(self: TokenPermissionItem): bool =
proc getTokenCriteriaMet*(self: TokenPermissionItem): bool =
return self.tokenCriteriaMet
proc getState*(self: TokenPermissionItem): int =
return self.state.int
proc buildTokenPermissionItem*(tokenPermission: CommunityTokenPermissionDto, chats: seq[ChatDto]): TokenPermissionItem =
var tokenCriteriaItems: seq[TokenCriteriaItem] = @[]
@ -90,7 +96,8 @@ proc buildTokenPermissionItem*(tokenPermission: CommunityTokenPermissionDto, cha
tokenCriteriaItems,
tokenPermissionChatListItems,
tokenPermission.isPrivate,
false # allTokenCriteriaMet will be updated by a call to checkPermissionsToJoin
false, # allTokenCriteriaMet will be updated by a call to checkPermissionsToJoin
tokenPermission.state
)
return tokenPermissionItem

View File

@ -13,6 +13,7 @@ type
ChatList
IsPrivate
TokenCriteriaMet
State
QtObject:
type TokenPermissionsModel* = ref object of QAbstractListModel
@ -38,6 +39,7 @@ QtObject:
ModelRole.ChatList.int:"channelsListModel",
ModelRole.IsPrivate.int:"isPrivate",
ModelRole.TokenCriteriaMet.int:"tokenCriteriaMet",
ModelRole.State.int:"permissionState",
}.toTable
proc countChanged(self: TokenPermissionsModel) {.signal.}
@ -95,6 +97,8 @@ QtObject:
result = newQVariant(item.getIsPrivate())
of ModelRole.TokenCriteriaMet:
result = newQVariant(item.getTokenCriteriaMet())
of ModelRole.State:
result = newQVariant(item.getState())
proc addItem*(self: TokenPermissionsModel, item: TokenPermissionItem) =
let parentModelIndex = newQModelIndex()
@ -143,6 +147,7 @@ QtObject:
self.items[idx].chatList.setItems(item.chatList.getItems())
self.items[idx].isPrivate = item.isPrivate
self.items[idx].tokenCriteriaMet = item.tokenCriteriaMet
self.items[idx].state = item.state
let index = self.createIndex(idx, 0, nil)
defer: index.delete
@ -151,5 +156,6 @@ QtObject:
ModelRole.TokenCriteria.int,
ModelRole.ChatList.int,
ModelRole.IsPrivate.int,
ModelRole.TokenCriteriaMet.int
ModelRole.TokenCriteriaMet.int,
ModelRole.State.int
])

View File

@ -58,7 +58,13 @@ type TokenPermissionType* {.pure.}= enum
ViewAndPost = 4,
BecomeTokenMaster = 5,
BecomeTokenOwner = 6
type TokenPermissionState* {.pure.}= enum
Approved = 0,
AdditionPending = 1,
UpdatePending = 2,
RemovalPending = 3,
type TokenType* {.pure.}= enum
Unknown = 0,
ERC20 = 1,
@ -81,6 +87,7 @@ type CommunityTokenPermissionDto* = object
tokenCriteria*: seq[TokenCriteriaDto]
chatIds*: seq[string]
isPrivate*: bool
state*: TokenPermissionState
type CommunityTokensMetadataDto* = object
addresses*: Table[int, string]
@ -280,9 +287,14 @@ proc toCommunityTokenPermissionDto*(jsonObj: JsonNode): CommunityTokenPermission
discard jsonObj.getProp("is_private", result.isPrivate)
var tokenPermissionTypeInt: int
discard jsonObj.getProp("type", tokenPermissionTypeInt)
if (tokenPermissionTypeInt >= ord(low(TokenPermissionType)) or tokenPermissionTypeInt <= ord(high(TokenPermissionType))):
if (tokenPermissionTypeInt >= ord(low(TokenPermissionType)) and tokenPermissionTypeInt <= ord(high(TokenPermissionType))):
result.`type` = TokenPermissionType(tokenPermissionTypeInt)
var tokenPermissionStateInt: int
discard jsonObj.getProp("state", tokenPermissionStateInt)
if (tokenPermissionStateInt >= ord(low(TokenPermissionState)) and tokenPermissionStateInt <= ord(high(TokenPermissionState))):
result.state = TokenPermissionState(tokenPermissionStateInt)
var tokenCriteriaObj: JsonNode
if(jsonObj.getProp("token_criteria", tokenCriteriaObj)):
for tokenCriteria in tokenCriteriaObj:

View File

@ -203,6 +203,7 @@ const SIGNAL_COMMUNITY_INFO_ALREADY_REQUESTED* = "communityInfoAlreadyRequested"
const TOKEN_PERMISSIONS_ADDED = "tokenPermissionsAdded"
const TOKEN_PERMISSIONS_MODIFIED = "tokenPermissionsModified"
const TOKEN_PERMISSIONS_REMOVED = "tokenPermissionsRemoved"
const SIGNAL_CHECK_PERMISSIONS_TO_JOIN_RESPONSE* = "checkPermissionsToJoinResponse"
const SIGNAL_CHECK_PERMISSIONS_TO_JOIN_FAILED* = "checkPermissionsToJoinFailed"
@ -617,7 +618,8 @@ QtObject:
if tokenPermission.tokenCriteria.len != prevTokenPermission.tokenCriteria.len or
tokenPermission.isPrivate != prevTokenPermission.isPrivate or
tokenPermission.chatIds.len != prevTokenPermission.chatIds.len or
tokenPermission.`type` != prevTokenPermission.`type`:
tokenPermission.`type` != prevTokenPermission.`type` or
tokenPermission.state != prevTokenPermission.state:
permissionUpdated = true
@ -1930,28 +1932,23 @@ QtObject:
proc createOrEditCommunityTokenPermission*(self: Service, communityId: string, tokenPermission: CommunityTokenPermissionDto) =
try:
let editing = tokenPermission.id != ""
var response: RpcResponse[JsonNode]
if editing:
response = status_go.editCommunityTokenPermission(communityId, tokenPermission.id, int(tokenPermission.`type`), Json.encode(tokenPermission.tokenCriteria), tokenPermission.chatIDs, tokenPermission.isPrivate)
else:
response = status_go.createCommunityTokenPermission(communityId, int(tokenPermission.`type`), Json.encode(tokenPermission.tokenCriteria), tokenPermission.chatIDs, tokenPermission.isPrivate)
if response.result != nil and response.result.kind != JNull:
var changesField = TOKEN_PERMISSIONS_ADDED
if editing:
changesField = TOKEN_PERMISSIONS_MODIFIED
for permissionId, permission in response.result["communityChanges"].getElems()[0][changesField].pairs():
for permissionId, permission in response.result["communityChanges"].getElems()[0][TOKEN_PERMISSIONS_ADDED].pairs():
let p = permission.toCommunityTokenPermissionDto()
self.communities[communityId].tokenPermissions[permissionId] = p
self.events.emit(SIGNAL_COMMUNITY_TOKEN_PERMISSION_CREATED, CommunityTokenPermissionArgs(communityId: communityId, tokenPermission: p))
var signal = SIGNAL_COMMUNITY_TOKEN_PERMISSION_CREATED
if editing:
signal = SIGNAL_COMMUNITY_TOKEN_PERMISSION_UPDATED
for permissionId, permission in response.result["communityChanges"].getElems()[0][TOKEN_PERMISSIONS_MODIFIED].pairs():
let p = permission.toCommunityTokenPermissionDto()
self.communities[communityId].tokenPermissions[permissionId] = p
self.events.emit(SIGNAL_COMMUNITY_TOKEN_PERMISSION_UPDATED, CommunityTokenPermissionArgs(communityId: communityId, tokenPermission: p))
self.events.emit(signal, CommunityTokenPermissionArgs(communityId: communityId, tokenPermission: p))
return
var signal = SIGNAL_COMMUNITY_TOKEN_PERMISSION_CREATION_FAILED
@ -1966,12 +1963,18 @@ QtObject:
try:
let response = status_go.deleteCommunityTokenPermission(communityId, permissionId)
if response.result != nil and response.result.kind != JNull:
for permissionId in response.result["communityChanges"].getElems()[0]["tokenPermissionsRemoved"].getElems():
if self.communities[communityId].tokenPermissions.hasKey(permissionId.getStr()):
self.communities[communityId].tokenPermissions.del(permissionId.getStr())
self.events.emit(SIGNAL_COMMUNITY_TOKEN_PERMISSION_DELETED,
CommunityTokenPermissionRemovedArgs(communityId: communityId, permissionId: permissionId.getStr))
for permissionId, permission in response.result["communityChanges"].getElems()[0][TOKEN_PERMISSIONS_REMOVED].pairs():
if self.communities[communityId].tokenPermissions.hasKey(permissionId):
self.communities[communityId].tokenPermissions.del(permissionId)
self.events.emit(SIGNAL_COMMUNITY_TOKEN_PERMISSION_DELETED, CommunityTokenPermissionRemovedArgs(communityId: communityId, permissionId: permissionId))
for permissionId, permission in response.result["communityChanges"].getElems()[0][TOKEN_PERMISSIONS_MODIFIED].pairs():
let p = permission.toCommunityTokenPermissionDto()
self.communities[communityId].tokenPermissions[permissionId] = p
self.events.emit(SIGNAL_COMMUNITY_TOKEN_PERMISSION_UPDATED, CommunityTokenPermissionArgs(communityId: communityId, tokenPermission: p))
return
var tokenPermission = CommunityTokenPermissionDto()
tokenPermission.id = permissionId
self.events.emit(SIGNAL_COMMUNITY_TOKEN_PERMISSION_DELETION_FAILED,

View File

@ -62,22 +62,22 @@ Flickable {
RadioButton {
text: "Active state"
checked: true
onCheckedChanged: if(checked) PermissionsModel.changePermissionState(root.model, model.index, PermissionTypes.State.Active)
onCheckedChanged: if(checked) PermissionsModel.changePermissionState(root.model, model.index, PermissionTypes.State.Approved)
}
RadioButton {
text: "Creating state"
onCheckedChanged: if(checked) PermissionsModel.changePermissionState(root.model, model.index, PermissionTypes.State.Creating)
onCheckedChanged: if(checked) PermissionsModel.changePermissionState(root.model, model.index, PermissionTypes.State.AdditionPending)
}
RadioButton {
text: "Editing state"
onCheckedChanged: if(checked) PermissionsModel.changePermissionState(root.model, model.index, PermissionTypes.State.Editing)
onCheckedChanged: if(checked) PermissionsModel.changePermissionState(root.model, model.index, PermissionTypes.State.UpdatePending)
}
RadioButton {
text: "Deleting state"
onCheckedChanged: if(checked) PermissionsModel.changePermissionState(root.model, model.index, PermissionTypes.State.Deleting)
onCheckedChanged: if(checked) PermissionsModel.changePermissionState(root.model, model.index, PermissionTypes.State.RemovalPending)
}
}

View File

@ -14,7 +14,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel1(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.Admin,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: true,
tokenCriteriaMet: false
},
@ -22,7 +22,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel2(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: true
}
@ -50,7 +50,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel4(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.Admin,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: true
}
]
@ -60,28 +60,28 @@ QtObject {
holdingsListModel: root.createHoldingsModel4(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.Admin,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: true
},
{
holdingsListModel: root.createHoldingsModel3(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false
},
{
holdingsListModel: root.createHoldingsModel2(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false
},
{
holdingsListModel: root.createHoldingsModel1(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false
}
]
@ -91,14 +91,14 @@ QtObject {
holdingsListModel: root.createHoldingsModel1(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.Admin,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: true
},
{
holdingsListModel: root.createHoldingsModel2(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false
}
]
@ -108,14 +108,14 @@ QtObject {
holdingsListModel: root.createHoldingsModel5(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.Admin,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: true
},
{
holdingsListModel: root.createHoldingsModel4(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false
}
]
@ -125,21 +125,21 @@ QtObject {
holdingsListModel: root.createHoldingsModel1(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.Admin,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: true
},
{
holdingsListModel: root.createHoldingsModel1b(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false
},
{
holdingsListModel: root.createHoldingsModel2(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false
}
]
@ -149,28 +149,28 @@ QtObject {
holdingsListModel: root.createHoldingsModel1(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.Admin,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: true
},
{
holdingsListModel: root.createHoldingsModel2(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false
},
{
holdingsListModel: root.createHoldingsModel3(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false
},
{
holdingsListModel: root.createHoldingsModel5(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false
}
]
@ -181,7 +181,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel2b(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Admin,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: true
},
@ -190,7 +190,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel3(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Admin,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: false
},
@ -199,7 +199,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel2(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: true
},
@ -208,7 +208,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel3(),
channelsListModel: root.createChannelsModel2(),
permissionType: PermissionTypes.Type.Member,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: false
}
@ -255,7 +255,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel1b(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.Read,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: true
},
@ -264,7 +264,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel1(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.Read,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: false
},
@ -273,7 +273,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel3(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.Read,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: false
},
@ -282,7 +282,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel2(),
channelsListModel: root.createChannelsModel3(),
permissionType: PermissionTypes.Type.Read,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: true
},
@ -291,7 +291,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel5(),
channelsListModel: root.createChannelsModel3(),
permissionType: PermissionTypes.Type.Read,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: false
},
@ -300,7 +300,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel3(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.ViewAndPost,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: false
},
@ -309,7 +309,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel2b(),
channelsListModel: root.createChannelsModel1(),
permissionType: PermissionTypes.Type.ViewAndPost,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: true
},
@ -318,7 +318,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel3(),
channelsListModel: root.createChannelsModel3(),
permissionType: PermissionTypes.Type.ViewAndPost,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: false
},
@ -327,7 +327,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel5(),
channelsListModel: root.createChannelsModel3(),
permissionType: PermissionTypes.Type.ViewAndPost,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: false
},
@ -336,7 +336,7 @@ QtObject {
holdingsListModel: root.createHoldingsModel1(),
channelsListModel: root.createChannelsModel3(),
permissionType: PermissionTypes.Type.ViewAndPost,
permissionState: PermissionTypes.State.Active,
permissionState: PermissionTypes.State.Approved,
isPrivate: false,
tokenCriteriaMet: false
}

View File

@ -15,7 +15,7 @@ Control{
property var channelsListModel
property int permissionType: PermissionTypes.Type.None
property int permissionState: PermissionTypes.State.Active
property int permissionState: PermissionTypes.State.Approved
property bool isPrivate: false
property bool showButtons: true
@ -34,20 +34,20 @@ Control{
readonly property int buttonDiameter: 36
readonly property int buttonTextSpacing: 6
readonly property int headerIconleftMargin: 20
readonly property bool isActiveState: root.permissionState === PermissionTypes.State.Active
readonly property bool isDeletingState: root.permissionState === PermissionTypes.State.Deleting
readonly property bool isActiveState: root.permissionState === PermissionTypes.State.Approved
readonly property bool isDeletingState: root.permissionState === PermissionTypes.State.RemovalPending
function getStateText(state) {
if(state === PermissionTypes.State.Active)
if(state === PermissionTypes.State.Approved)
return qsTr("Active")
if(state === PermissionTypes.State.Creating)
if(state === PermissionTypes.State.AdditionPending)
return qsTr("Pending, will become active once owner node comes online")
if(state === PermissionTypes.State.Deleting)
if(state === PermissionTypes.State.RemovalPending)
return qsTr("Deletion pending, will be deleted once owner node comes online")
if(state === PermissionTypes.State.Editing)
if(state === PermissionTypes.State.UpdatePending)
return qsTr("Pending updates will be applied when owner node comes online")
}
}
@ -261,6 +261,9 @@ Control{
Layout.preferredWidth: Layout.preferredHeight
type: StatusRoundButton.Type.Primary
onClicked: root.editClicked()
// FIXME: implement undo operation first
enabled: d.isActiveState
}
StatusBaseText {
Layout.alignment: Qt.AlignHCenter
@ -297,10 +300,13 @@ Control{
Layout.preferredWidth: Layout.preferredHeight
type: StatusRoundButton.Type.Quaternary
onClicked: root.removeClicked()
// FIXME: implement undo operation first
enabled: d.isActiveState
}
StatusBaseText {
Layout.alignment: Qt.AlignHCenter
text: d.isDeletingState ? qsTr("Undo delete") : qsTr("Delete")
text: /*d.isDeletingState*/false ? qsTr("Undo delete") : qsTr("Delete")
color: Theme.palette.dangerColor1
font.pixelSize: d.buttonTextPixelSize
}

View File

@ -10,7 +10,7 @@ QtObject {
}
enum State {
Active, Creating, Deleting, Editing
Approved, AdditionPending, UpdatePending, RemovalPending
}
function getName(type) {