diff --git a/CHANGELOG.md b/CHANGELOG.md index 84bfbe167..bd04a98bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ Types of changes can be: Added/Changed/Deprecated/Removed/Fixed/Security - delete "chat via"-link from phonebook if phone number was deleted on server - remove all "chat via"-links from phonebook when sync is disabled - fix to show avatars for incoming pictures in group chats (@starypatyk) +- do not allow selecting files in files browser that are not allowed to be reshared ## [11.1.0] - 2021-03-12 ### Added diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/adapters/items/BrowserFileItem.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/adapters/items/BrowserFileItem.java index 4ad6fa10a..f57917644 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/adapters/items/BrowserFileItem.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/adapters/items/BrowserFileItem.java @@ -26,6 +26,8 @@ import android.view.View; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; + import autodagger.AutoInjector; import butterknife.BindView; import butterknife.ButterKnife; @@ -102,17 +104,21 @@ public class BrowserFileItem extends AbstractFlexibleItem adapter, ViewHolder holder, int position, List payloads) { holder.fileIconImageView.setController(null); - - if (browserFile.isEncrypted()) { - holder.fileEncryptedImageView.setVisibility(View.VISIBLE); + if (!browserFile.isAllowedToReShare() || browserFile.isEncrypted()) { holder.itemView.setEnabled(false); holder.itemView.setAlpha(0.38f); } else { - holder.fileEncryptedImageView.setVisibility(View.GONE); holder.itemView.setEnabled(true); holder.itemView.setAlpha(1.0f); } + if (browserFile.isEncrypted()) { + holder.fileEncryptedImageView.setVisibility(View.VISIBLE); + + } else { + holder.fileEncryptedImageView.setVisibility(View.GONE); + } + if (browserFile.isFavorite()) { holder.fileFavoriteImageView.setVisibility(View.VISIBLE); } else { @@ -146,7 +152,11 @@ public class BrowserFileItem extends AbstractFlexibleItem + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.nextcloud.talk.components.filebrowser.models.properties; + +import android.text.TextUtils; + +import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; + +import at.bitfire.dav4android.Property; +import at.bitfire.dav4android.PropertyFactory; +import at.bitfire.dav4android.XmlUtils; +import lombok.Getter; +import lombok.Setter; + +public class NCPermission implements Property { + public static final Name NAME = new Name(DavUtils.OC_NAMESPACE, DavUtils.EXTENDED_PROPERTY_NAME_PERMISSIONS); + + @Getter + @Setter + private String ncPermission; + + private NCPermission(String p) { + ncPermission = p; + } + + public static class Factory implements PropertyFactory { + + @Nullable + @Override + public Property create(@NotNull XmlPullParser xmlPullParser) { + try { + String text = XmlUtils.INSTANCE.readText(xmlPullParser); + if (!TextUtils.isEmpty(text)) { + return new NCPermission(text); + } + } catch (IOException e) { + e.printStackTrace(); + } catch (XmlPullParserException e) { + e.printStackTrace(); + } + + return new NCPermission(""); + } + + @NotNull + @Override + public Name getName() { + return NAME; + } + } +} diff --git a/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java b/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java index 579f726be..f2193d57d 100644 --- a/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java +++ b/app/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java @@ -68,7 +68,7 @@ public class DavUtils { propSet.add(GetETag.NAME); propSet.add(ResourceType.NAME); - propSet.add(new Property.Name(OC_NAMESPACE, EXTENDED_PROPERTY_NAME_PERMISSIONS)); + propSet.add(NCPermission.NAME); propSet.add(OCId.NAME); propSet.add(OCSize.NAME); propSet.add(OCFavorite.NAME); @@ -97,6 +97,7 @@ public class DavUtils { reflectionMap.put(NCEncrypted.NAME, new NCEncrypted.Factory()); reflectionMap.put(OCFavorite.NAME, new OCFavorite.Factory()); reflectionMap.put(OCSize.NAME, new OCSize.Factory()); + reflectionMap.put(NCPermission.NAME, new NCPermission.Factory()); factories.set(propertyRegistry, reflectionMap); } catch (NoSuchFieldException e) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 97d8f9b49..04a7f8cf8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -304,6 +304,7 @@ Back Refresh %1$s | Last modified: %2$s + You are not allowed to re-share this file