universalIdentifier para você importar. Em vez disso, o servidor deriva cada identificador de forma determinística, e o twenty-sdk expõe a mesma derivação para que seu manifesto possa resolver o valor exato que o servidor usa.
Campos do sistema
Os campos escalares presentes em todo objeto, nenhum dos quais você declara comdefineField():
id, createdAt, updatedAt, deletedAt, createdBy, updatedBy, position, searchVector
Então, como você referencia createdAt como uma coluna em uma visualização?
O Problema
Desde o Twenty 2.19, o identificador universal de um campo de sistema é derivado deterministicamente pelo servidor a partir de três entradas: o identificador universal do aplicativo, o identificador universal do objeto e o nome do campo. Inventar um id e deixá-lo hardcoded não funciona: ele não corresponde a nada no servidor, e a sincronização rejeita a referência pendente:A Solução
getFieldUniversalIdentifier está disponível a partir do twenty-sdk 2.21.getFieldUniversalIdentifier para resolver exatamente o mesmo valor que o servidor usa. Ela recebe as três entradas e retorna o identificador universal do campo:
applicationUniversalIdentifieré o identificador do seu app, aquele que você passa paradefineApplication().objectUniversalIdentifieré o identificador do objeto ao qual o campo pertence.nameé o nome do campo de sistema, um dos valores listados acima.
Exemplo: uma coluna createdAt em uma visualização
O caso típico é adicionar uma colunacreatedAt a uma visualização de um dos seus objetos personalizados. Resolva o id do campo e referencie-o como qualquer outro fieldMetadataUniversalIdentifier:
src/views/example-view.ts
fieldMetadataUniversalIdentifier: campos de visualização, filtros, ordenações, agrupamentos e widgets de layout de página.
Resolva o id, não o deixe hardcoded. Como o servidor deriva o valor a partir do
id do aplicativo, do id do objeto e do nome do campo, chamar
getFieldUniversalIdentifier mantém a sua referência correta mesmo que essas
entradas mudem, e evita divergências se a derivação evoluir no futuro.Campos de relação do sistema
getSystemRelationFieldUniversalIdentifier está disponível a partir da versão 2.23 do twenty-sdk e requer um servidor Twenty na versão 2.23 ou posterior.timelineActivities, attachments, noteTargets e taskTargets, cada um apontando para o objeto de relação padrão correspondente.
Dessa forma, esses campos não são resolvidos com getFieldUniversalIdentifier: seu identificador é derivado de forma independente de nome, a partir do objeto que hospeda o campo e do objeto para o qual o campo aponta. Dessa forma, renomear um objeto nunca altera os identificadores de seus campos de relação.
Use getSystemRelationFieldUniversalIdentifier para resolvê-los:
objectUniversalIdentifieré o objeto que hospeda o campo.relationTargetObjectUniversalIdentifieré o objeto para o qual o campo aponta.
attachment.targetRocket, o campo morph que o servidor cria no objeto de relação padrão), inverta os dois:
fieldMetadataUniversalIdentifier é esperado.
Visualizações de sistema
getSystemViewUniversalIdentifier e getSystemViewFieldUniversalIdentifier
estão disponíveis a partir da versão 2.26 do twenty-sdk e requerem um servidor Twenty na versão 2.26 ou posterior.All {objectLabelPlural}, com chave ViewKey.INDEX), com uma coluna por campo exibível. Assim como os campos de relação de sistema, seus identificadores são derivados sem usar nomes, então renomear um objeto ou um campo nunca os altera.
Use getSystemViewUniversalIdentifier para resolvê‑la:
objectMetadataApplicationUniversalIdentifieré o aplicativo proprietário do objeto, que define o namespace da visualização.objectUniversalIdentifieré o objeto que a visualização lista.viewKeyé a chave da visualização de sistema, hojeViewKey.INDEX.
viewUniversalIdentifier seja esperado, como uma entrada de barra lateral NavigationMenuItemType.VIEW. Para simplesmente abrir a lista principal de um objeto, prefira NavigationMenuItemType.OBJECT com targetObjectUniversalIdentifier: isso não precisa de derivação.
getSystemViewFieldUniversalIdentifier resolve uma única coluna em uma visualização de sistema, a partir da visualização e do campo que ela exibe:
Objetos Padrão do Twenty
Para um objeto padrão do Twenty (Person, Company, Opportunity, …), você não precisa derivar nada: os identificadores são constantes pré‑computadas que você pode importar diretamente, tanto para campos quanto para visualizações.defineObject(), em que não existe tal constante.
name é um campo padrão, não um campo de sistema. Ele mantém seu próprio identificador universal
hardcoded e não é resolvido por meio de
getFieldUniversalIdentifier. Em objetos que você define, referencie o campo
name pelo identificador que você atribuiu a ele em defineObject().