Actualización a APS Conecta Gestión 33¶
Resumen¶
Esta página enumera los cambios de la versión 33 que afectan a las apps: la versión 4 de la biblioteca nextcloud/files y la nueva API de barra lateral, la API de secciones del perfil, las API de JavaScript eliminadas, la compatibilidad con PHP 8.2 a 8.5, el nuevo agente de usuario, los ID Snowflake y las API de backend añadidas, modificadas, obsoletas o eliminadas. Está dirigida a quienes desarrollan o mantienen apps.
Fuente: documentación de Nextcloud, «developer_manual/release_notes/previous/upgrade_to_33», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
Cambios de frontend¶
API de archivos¶
Cambios incompatibles en el paquete de la API de archivos¶
La biblioteca nextcloud/files se actualizó a la versión v4.0.0 en Server.
Esta versión incluye cambios incompatibles en la API, por lo que habrá que actualizar el código a tiempo para Server 33.
Para mejorar la experiencia de desarrollo, se amplió el objeto de contexto que se pasa a las acciones de archivo. Ahora incluye campos adicionales, como la carpeta actual y la lista de archivos actual. También cambiaron las firmas de las funciones: los manejadores de acciones ahora usan parámetros desestructurados en lugar de argumentos posicionales en un array.
El registro de cambios completo y los detalles de la migración se encuentran en el repositorio: nextcloud-files (4.0.0 beta).
Barra lateral¶
En esta versión, la API de archivos se cambió para usar la API Node (disponible desde APS Conecta Gestión 27) en lugar de la API heredada FileInfo.
Por eso cambió la forma de registrar pestañas y acciones de la barra lateral.
La API OCA.Files.Sidebar se eliminó y se reemplazó por una nueva API de barra lateral disponible en el paquete @nextcloud/files.
Para registrar pestañas de la barra lateral ahora hay que usar la nueva API, que se basa en componentes web;
para más detalles, consultar el registro de cambios del paquete @nextcloud/files.
Si la app usaba la barra lateral de Archivos, ahora tiene que usar una barra lateral propia mediante el componente NcAppSidebar del paquete @nextcloud/vue.
En cambio, si la app ya usa su propia implementación de barra lateral pero depende de la app Viewer para abrir la barra lateral mediante la API OCA.Files.Sidebar,
ahora hay que escuchar el evento viewer:sidebar:open del bus de eventos de la app Viewer para abrir la barra lateral propia.
Para habilitar la acción Abrir barra lateral dentro del visor, hay que establecer enabledSidebar
al abrir el visor, de modo que se permita abrir la barra lateral desde dentro del visor, y escuchar el evento mencionado.
App de perfil¶
Para que la API de secciones del perfil sea independiente del framework, lo que permite migrar la app de perfil a Vue 3
sin dejar de permitir que las apps externas usen secciones de perfil basadas en Vue 2,
la API OCA.Core.ProfileSections se reemplazó por OCA.Profile.ProfileSections,
que usa componentes web personalizados en lugar de basarse en componentes de Vue.
A partir de APS Conecta Gestión 33, el método OCA.Profile.ProfileSections.registerSection acepta
un objeto de sección con el siguiente formato:
interface ProfileSection {
/**
* Unique identifier for the section
*/
id: string
/**
* The order in which the section should appear (lower numbers appear first)
*/
order: number
/**
* The custom element tag name to be used for this section
*
* The custom element must have been registered beforehand,
* and must have the a `user` property of type `string | undefined`.
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/Web_components
*/
tagName: string
/**
* Static parameters to be passed to the custom web component
*/
params?: Record<string, unknown>
}
API añadidas¶
OCA.Profile.ProfileSectionsse añadió como reemplazo independiente del framework deOCA.Core.ProfileSections. Ver la sección sobre la app de perfil, más arriba.
API modificadas¶
Por definir
API obsoletas¶
Por definir
API eliminadas¶
Se eliminó la implementación global de
md5. Estaba obsoleta desde APS Conecta Gestión 20 y APS Conecta Gestión ya no la usaba. Si todavía se necesita una implementación demd5, basta con usar algún paquete externo como crypto-browserify.Se eliminó
OCP.WhatsNew.OC.AppConfigestaba obsoleto desde APS Conecta Gestión 16 y ahora se eliminó. UsarOCP.AppConfigen su lugar.Se eliminó la API
OC.Settings.UserSettings.Se eliminó la API
OC.SystemTags. Si se necesita obtener la lista de etiquetas del sistema, consultar esta solicitud de fusión para ver cómo obtener las etiquetas directamente.Se eliminaron
OC.setyOC.get. Ambos están obsoletos desde APS Conecta Gestión 19. Paraget, si de verdad hace falta, usar lodash get. Y paraset, usar lodash set.Se eliminaron
OC.redirectyOC.reload. Ambos estaban obsoletos desde APS Conecta Gestión 17. Para reemplazarOC.redirect, usar directamentewindow.location. Para reemplazarOC.reload, usar directamentewindow.location.reload.Se eliminó
OC.fileIsBlacklisted. Estaba obsoleto desde APS Conecta Gestión 18. El reemplazo es usarvalidateFilenamedel paquete @nextcloud/files.Los métodos de host obsoletos de OC estaban obsoletos desde APS Conecta Gestión 17 y ahora se eliminaron
Para reemplazar
OC.getHost, usarwindow.location.host.Para reemplazar
OC.getHostName, usarwindow.location.hostname.Para reemplazar
OC.getPort, usarwindow.location.port.Para reemplazar
OC.getProtocol, usarwindow.location.protocol.
La API
OCA.Core.ProfileSectionsse eliminó y se reemplazó por la APIOCA.Profile.ProfileSections, independiente del framework. Ver la sección sobre la app de perfil, más arriba.Se eliminó la API
OCA.Files.Sidebar. Era la última API que usaba la API heredadaFileInfo. Ahora se reemplaza por la nueva API de barra lateral basada en Node, disponible en el paquete @nextcloud/files.La API
OCA.Sharing.ExternalLinkActionsquedó obsoleta en APS Conecta Gestión 23 y ahora se eliminó. Se reemplazó porOCA.Sharing.ExternalShareAction, que ahora tiene una API propiamente dicha, usando en su lugarregisterSidebarActionde @nextcloud/sharing.
Cambios de backend¶
Compatibilidad con PHP 8.5 añadida¶
Ver la sección siguiente para los cambios de código opcionales en la app y en la gestión de dependencias
Compatibilidad con PHP 8.1 eliminada¶
En esta versión se eliminó la compatibilidad con PHP 8.1. Seguir los pasos siguientes para que la app sea compatible.
Si
appinfo/info.xmltiene una especificación de dependencia para PHP, aumentarmin-versiona 8.2.
<dependencies>
<php min-version="8.2" max-version="8.5" />
<nextcloud min-version="31" max-version="33" />
</dependencies>
Si la app tiene un
composer.jsony el archivo contiene las restricciones de PHP deinfo.xml, ajustarlo también.
{
"require": {
"php": ">=8.2 <=8.5"
}
}
Si se tiene configurada la integración continua, quitar PHP 8.1 y añadir PHP 8.5 en las matrices de pruebas y de linters.
Cambio del agente de usuario predeterminado de las solicitudes salientes¶
A partir de esta versión, el agente de usuario predeterminado de las solicitudes que hace la instancia cambió de Nextcloud Server Crawler a Nextcloud-Server-Crawler/X.Y.Z, donde X.Y.Z es la versión actual del servidor.
ID Snowflake¶
Las siguientes tablas ahora usan ID Snowflake:
oc_previewsoc_jobsoc_share_external
Las API relacionadas con estas tablas ahora usan una cadena en lugar de un int. Ver la sección de API modificadas y ID Snowflake.
Eventos añadidos¶
Por definir
API añadidas¶
Ahora se exponen
\OCP\DB\IResult::iterateAssociativey\OCP\DB\IResult::iterateNumericde doctrine/dbal. Estos dos métodos devuelven iteradores que pueden usarse directamente en un foreach para recorrer el resultado de una consulta SQL. Por ejemplo:
$result = $qb->executeQuery();
foreach ($result->iterateAssociative() as $row) {
$id = $row['id'];
}
$result->closeCursor();
Esta versión permite exponer algunas métricas relacionadas con APS Conecta Gestión en formato OpenMetrics. Se pueden añadir exportadores propios implementando la interfaz
\OCP\OpenMetrics\IMetricFamily. Ver Exportador de Open Metrics para más información.Se añadió el tipo de tarea de TaskProcessing
ImageToTextOpticalCharacterRecognitionSe añadió la interfaz de proveedor de TaskProcessing
ISynchronousWatermarkingProviderpara permitir que los proveedores de procesamiento síncrono reaccionen al indicador booleano includeWatermarkSe añadió al esquema de info.xml de las aplicaciones la compatibilidad con secciones y ajustes solo de delegación. Solo es útil si la aplicación necesita habilitar la delegación de derechos que no están relacionados con una página de ajustes. Ejemplos conocidos de ello son la gestión de usuarios y el registro de webhooks. Ver metadatos de la app para más detalles.
API modificadas¶
Los métodos
setIdygetIdde\OCP\BackgroundJob\IJobse cambiaron para devolver/aceptar una cadena en lugar de un int. Lo mismo ocurre con\OCP\BackgroundJob\IJobList, donde algunos métodos (removedById,getByIdygetDetailsById) ahora reciben una cadena en lugar de un int. Se supone que la cadena es un ID Snowflake.Los métodos
setObjectIdygetObjectIdde\OCP\Activity\IEventse cambiaron para devolver/aceptar una cadena además de un int. Se supone que la cadena es un ID Snowflake.La clase
\OCP\TaskProcessing\Taskahora tiene los métodosgetIncludeWatermarkysetIncludeWatermarkpara indicar si el proveedor debe añadir una marca de agua a la salida generada.La API OCS de TaskProcessing ahora también acepta el indicador
includeWatermarkal programar tareas\OCP\Notification\INotification::setIcon,\OCP\Notification\INotification::setLinky\OCP\Notification\IAction::setLinkahora lanzan\OCP\Notification\InvalidValueExceptioncuando el enlace proporcionado no es absoluto, como se anunció anteriormente en Actualización a APS Conecta Gestión 30
API obsoletas¶
\OCP\DB\IResult::fetchy\OCP\DB\IResult::fetchAllquedan obsoletos de forma suave (soft-deprecated). En su lugar se pueden usar\OCP\DB\IResult::fetchAssociative,\OCP\DB\IResult::fetchNumericy\OCP\DB\IResult::fetchOnecomo reemplazo de\OCP\DB\IResult::fetch; y\OCP\DB\IResult::fetchAllAssociative,\OCP\DB\IResult::fetchAllNumericy\OCP\DB\IResult::fetchFirstColumncomo reemplazo de\OCP\DB\IResult::fetchAll. Si se usa rector, se puede usar el conjunto Nextcloud33 para portar automáticamente la mayor parte del código a los nuevos métodos.
API eliminadas¶
El método
\OCP\BackgroundJob\IJob::executeestaba obsoleto desde APS Conecta Gestión 25 y ahora se eliminó. Usar en su lugar el métodoIJob::start, disponible desde APS Conecta Gestión 25.Las clases
\OCP\Search\PagedProvider,\OCP\Search\Providery\OCP\Search\Resultestaban obsoletas desde APS Conecta Gestión 20 y ahora se eliminaron. Usar en su lugar\OCP\Search\SearchResulty\OCP\Search\IProvider, disponibles desde APS Conecta Gestión 20.Se eliminó el método
\OC_Util::runningOnMac(). En su lugar basta con comprobarPHP_OS_FAMILY === 'Darwin'.El método
\OCP\DB\IQueryBuilder::executeestaba obsoleto desde APS Conecta Gestión 22 y ahora se eliminó. Usar en su lugar\OCP\DB\IQueryBuilder::executeQueryal ejecutar una consultaSELECT, y el método\OCP\DB\IQueryBuilder::executeStatemental ejecutar una sentenciaUPDATE,INSERTyDELETE, disponibles desde APS Conecta Gestión 20.En lugar de capturar excepciones del paquete Doctrine DBAL, ahora hay que capturar
OCP\DB\Exceptiony comprobargetReason. Por ejemplo, el siguiente código antiguo:
try {
$qb->insert(...);
$qb->execute();
} catch (\Doctrine\DBAL\Exception\UniqueConstraintViolationException) {
// Do stuff
}
Debe reemplazarse por el siguiente código:
try {
$qb->insert(...);
$qb->executeStatement();
} catch (\OCP\DB\Exception $e) {
if ($e->getReason() !== \OCP\DB\Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
throw $e;
}
// Do stuff
}
\OCP\Files::buildNotExistingFileNamey el helper privado relacionado\OC_Helper::buildNotExistingFileNameestaban obsoletos desde APS Conecta Gestión 14 y ahora se eliminaron. Usar\OCP\Files\Folder::getNonExistingNameen su lugar.Se eliminó la función
WhatsNewy, con ella, la claseOC\Updater\ChangesChecky las API relacionadas. Esto incluye también la tabla de base de datoswhats_newy la claseWhatsNewController, que servía el endpoint/core/whatsnew, ahora eliminado.Se eliminó la clase heredada
\OC_Response.