Tenemos un selector de archivos de Google en funcionamiento, pero nuestros usuarios se confunden al tener que seleccionar las carpetas y no poder guardar en la raíz de la carpeta actual en la que se encuentran. ¿Hay alguna opción que pueda usarse para cambiar el comportamiento del selector para que sea posible? ¿O tal vez un enfoque completamente diferente?
Este es un pequeño fragmento del código angular que configura el comportamiento del selector de Google:
const pickerBuilder = new google.picker.PickerBuilder(); view = new google.picker.DocsView() .setParent('root') .setIncludeFolders(true); view.setMimeTypes('application/vnd.google-apps.folder') .setSelectFolderEnabled(true); picker = pickerBuilder .enableFeature(google.picker.Feature.NAV_HIDDEN) .setOAuthToken(this.oauthToken.access_token) .addView(view) .addView(new google.picker.DocsUploadView());¿Qué le parece crear un selector para seleccionar la carpeta y, cuando se selecciona el archivo, crear una nueva instancia del selector con DocsUploadView y establecer el padre mediante DocsUploadView.setParent(string) en el que eligió el usuario?
Solo un boceto de cómo se puede lograr esto:
function createPickerFolders() { const view = new google.picker.DocsView() .setIncludeFolders(true) .setSelectFolderEnabled(true) .setMimeTypes("application/vnd.google-apps.folder"); const picker = new google.picker.PickerBuilder() .addView(view) .setAppId(appId) .setOAuthToken(oauthToken) .setCallback(pickerViewCallback) .build(); picker.setVisible(true); } function createPickerUpload(folderId) { const view = new google.picker.DocsUploadView().setParent(folderId); const picker = new google.picker.PickerBuilder() .addView(view) .setAppId(appId) .setOAuthToken(oauthToken) .setCallback(pickerUploadCallback) .build(); picker.setVisible(true); }DocsView , creamos uno que representa DocsUploadView y establece su padre en la carpeta seleccionada function pickerViewCallback(data) { if (data.action == google.picker.Action.PICKED) { const folderId = data.docs[0].id; createPickerUpload(folderId); } }De esta forma conseguimos que la carpeta seleccionada por el usuario, sea en la que se suba el archivo.
Básicamente, terminamos dando a nuestros usuarios 2 opciones:
no es una solución óptima, pero hizo posible guardar en la raíz Y al tener la carpeta de mención de texto guardado, le daría al usuario una pista sobre cómo funciona la función de guardar normal.