Actualización a APS Conecta Gestión 19¶
Resumen¶
Esta página enumera los cambios de la versión 19 que afectan a las apps: el fin del polyfill global de Babel, la obsolescencia de jQuery, las variables globales obsoletas o eliminadas con sus reemplazos, la actualización a Symfony 4.4, la obsolescencia de la inyección de servicios por nombre y las API nuevas y modificadas. Está dirigida a quienes desarrollan o mantienen apps.
Fuente: documentación de Nextcloud, «developer_manual/release_notes/previous/upgrade_to_19», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
Nota
Los cambios críticos se recopilaron en GitHub. Consultar el ticket original para ver los enlaces a las pull requests y a los tickets.
Cambios de frontend¶
Eliminación del polyfill de Babel¶
APS Conecta Gestión 19 ya no incluye un polyfill global de Babel, sino que usa core-js en su lugar. Asegurarse de que los scripts de frontend no dependan de API del navegador cubiertas por polyfills.
Obsolescencia de jQuery¶
A partir de APS Conecta Gestión 19, los globales jquery y $ quedan obsoletos para las apps. Aunque la biblioteca no se eliminará de inmediato, para dar tiempo a que quienes desarrollan se adapten, se recomienda reemplazarla por otra biblioteca o simplemente usar una herramienta de empaquetado como webpack para acotarla al código propio. La biblioteca se actualizará en APS Conecta Gestión en futuras versiones de APS Conecta Gestión, y las versiones más recientes de jQuery traen cambios incompatibles.
Variables globales obsoletas¶
OC.currentUser: usargetCurrentUserde https://www.npmjs.com/package/@nextcloud/authOC.filePath: usargenerateFilePathde https://www.npmjs.com/package/@nextcloud/routerOC.generateUrl: usargenerateUrlde https://www.npmjs.com/package/@nextcloud/routerOC.get: usar https://lodash.com/docs#getOC.getCurrentUser: usargetCurrentUserde https://www.npmjs.com/package/@nextcloud/authOC.getRootPath: usargetRootUrlde https://www.npmjs.com/package/@nextcloud/routerOC.imagePath: usarimagePathde https://www.npmjs.com/package/@nextcloud/routerOC.linkTo: usarlinkTode https://www.npmjs.com/package/@nextcloud/routerOC.linkToOCS: usargenerateOcsUrlde https://www.npmjs.com/package/@nextcloud/routerOC.linkToRemote: usargenerateRemoteUrlde https://www.npmjs.com/package/@nextcloud/routerOC.set: usar https://lodash.com/docs#setOC.webroot: usargetRootUrlde https://www.npmjs.com/package/@nextcloud/routerOCP.Toast.*: usar https://www.npmjs.com/package/@nextcloud/dialogs
Variables globales eliminadas¶
getURLParameterformatDatehumanFileSizerelative_modified_date
Bibliotecas eliminadas¶
marked
Cambios de backend¶
Actualización de Symfony¶
Symfony se actualizó a la v4.4. El cambio más importante para las apps es que los comandos de CLI deben devolver un valor int. Devolver null (de forma explícita o implícita) no se permitirá en futuras versiones de Symfony.
Obsolescencia de la inyección de servicios con nombre¶
Las apps podían consultar servicios del núcleo, como la implementación de la interfaz \OCP\ITagManager, con el nombre TagManager. Para unificar la resolución de servicios con las declaraciones de tipo de la inyección por constructor, la resolución por nombre queda obsoleta, registra advertencias y se eliminará en el futuro. Usar en su lugar el nombre de clase completamente calificado (con la constante ::class):
Si se tenía
$tagManager = \OC::$server->query('TagManager');
cambiar el código por
$tagManager = \OC::$server->query(\OCP\ITagManager::class);
En los argumentos del constructor, siempre debe declararse el tipo del servicio con su interfaz. Si ya se hace así, nada cambia.
Nuevas API¶
Se añadió la clase
\OCP\Authentication\Events\LoginFailedEventSe añadió el método
\OCP\Comments\IComment::getReferenceIdSe añadió el método
\OCP\Comments\IComment::setReferenceIdSe añadió la clase
\OCP\Contacts\Events\ContactInteractedWithEventSe añadió el método
\OCP\EventDispatcher\IEventDispatcher::removeListenerSe añadió la constante
\OCP\ITags::TAG_FAVORITESe añadió la clase
\OCP\Mail\Events\BeforeMessageSentSe añadió el método
\OCP\Lock\LockedException::getExistingLockSe añadió la clase
\OCP\Share\Events\VerifyMountPointEventSe añadió el método
\OCP\Share\IManager::allowEnumerationSe añadió el método
\OCP\Share\IManager::limitEnumerationToGroups
API modificadas¶
\OCP\User\Events\BeforeUserLoggedInEvent::getUsernameahora devuelve correctamente una cadena y no un\OCP\IUser