use of com.nextcloud.client.account.User in project android by nextcloud.
the class FileDisplayActivity method startMediaPreview.
/**
* Stars the preview of an already down media {@link OCFile}.
*
* @param file Media {@link OCFile} to preview.
* @param startPlaybackPosition Media position where the playback will be started, in milliseconds.
* @param autoplay When 'true', the playback will start without user interactions.
*/
public void startMediaPreview(OCFile file, long startPlaybackPosition, boolean autoplay, boolean showPreview, boolean streamMedia) {
Optional<User> user = getUser();
if (!user.isPresent()) {
// not reachable under normal conditions
return;
}
if (showPreview && file.isDown() && !file.isDownloading() || streamMedia) {
showSortListGroup(false);
Fragment mediaFragment = PreviewMediaFragment.newInstance(file, user.get(), startPlaybackPosition, autoplay);
setLeftFragment(mediaFragment);
configureToolbarForMediaPreview(file);
} else {
Intent previewIntent = new Intent();
previewIntent.putExtra(EXTRA_FILE, file);
previewIntent.putExtra(PreviewVideoActivity.EXTRA_START_POSITION, startPlaybackPosition);
previewIntent.putExtra(PreviewVideoActivity.EXTRA_AUTOPLAY, autoplay);
FileOperationsHelper fileOperationsHelper = new FileOperationsHelper(this, getUserAccountManager(), connectivityService);
fileOperationsHelper.startSyncForFileAndIntent(file, previewIntent);
}
}
use of com.nextcloud.client.account.User in project android by nextcloud.
the class FileDisplayActivity method requestForDownload.
private void requestForDownload(OCFile file, String downloadBehaviour, String packageName, String activityName) {
final User currentUser = getUser().orElseThrow(RuntimeException::new);
if (!mDownloaderBinder.isDownloading(currentUser, mWaitingToPreview)) {
Intent i = new Intent(this, FileDownloader.class);
i.putExtra(FileDownloader.EXTRA_USER, currentUser);
i.putExtra(FileDownloader.EXTRA_FILE, file);
i.putExtra(SendShareDialog.PACKAGE_NAME, packageName);
i.putExtra(SendShareDialog.ACTIVITY_NAME, activityName);
i.putExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR, downloadBehaviour);
startService(i);
}
}
use of com.nextcloud.client.account.User in project android by nextcloud.
the class FileDetailFragment method prepareOptionsMenu.
private void prepareOptionsMenu(Menu menu) {
if (containerActivity.getStorageManager() != null) {
User currentUser = accountManager.getUser();
FileMenuFilter mf = new FileMenuFilter(getFile(), containerActivity, getActivity(), false, currentUser);
mf.filter(menu, true);
}
if (getFile().isFolder()) {
FileMenuFilter.hideMenuItems(menu.findItem(R.id.action_send_file));
FileMenuFilter.hideMenuItems(menu.findItem(R.id.action_sync_file));
}
}
use of com.nextcloud.client.account.User in project android by nextcloud.
the class FileDetailActivitiesFragment method fetchAndSetData.
/**
* @param lastGiven int; -1 to disable
*/
private void fetchAndSetData(int lastGiven) {
final FragmentActivity activity = getActivity();
if (activity == null) {
Log_OC.e(this, "Activity is null, aborting!");
return;
}
final User user = accountManager.getUser();
if (user.isAnonymous()) {
activity.runOnUiThread(() -> {
setEmptyContent(getString(R.string.common_error), getString(R.string.file_detail_activity_error));
});
return;
}
Thread t = new Thread(() -> {
try {
ownCloudClient = clientFactory.create(user);
nextcloudClient = clientFactory.createNextcloudClient(user);
isLoadingActivities = true;
GetActivitiesRemoteOperation getRemoteNotificationOperation;
if (lastGiven > 0) {
getRemoteNotificationOperation = new GetActivitiesRemoteOperation(file.getLocalId(), lastGiven);
} else {
getRemoteNotificationOperation = new GetActivitiesRemoteOperation(file.getLocalId());
}
Log_OC.d(TAG, "BEFORE getRemoteActivitiesOperation.execute");
RemoteOperationResult result = nextcloudClient.execute(getRemoteNotificationOperation);
ArrayList<Object> versions = null;
if (restoreFileVersionSupported) {
ReadFileVersionsRemoteOperation readFileVersionsOperation = new ReadFileVersionsRemoteOperation(file.getLocalId());
RemoteOperationResult result1 = readFileVersionsOperation.execute(ownCloudClient);
if (result1.isSuccess()) {
versions = result1.getData();
}
}
if (result.isSuccess() && result.getData() != null) {
final List<Object> data = result.getData();
final List<Object> activitiesAndVersions = (ArrayList) data.get(0);
this.lastGiven = (int) data.get(1);
if (activitiesAndVersions.isEmpty()) {
this.lastGiven = END_REACHED;
}
if (restoreFileVersionSupported && versions != null) {
activitiesAndVersions.addAll(versions);
}
activity.runOnUiThread(() -> {
if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
populateList(activitiesAndVersions, lastGiven == -1);
}
});
} else {
Log_OC.d(TAG, result.getLogMessage());
// show error
String logMessage = result.getLogMessage();
if (result.getHttpCode() == HttpStatus.SC_NOT_MODIFIED) {
logMessage = getString(R.string.activities_no_results_message);
}
final String finalLogMessage = logMessage;
activity.runOnUiThread(() -> {
if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
setErrorContent(finalLogMessage);
isLoadingActivities = false;
}
});
}
hideRefreshLayoutLoader(activity);
} catch (ClientFactory.CreationException e) {
Log_OC.e(TAG, "Error fetching file details activities", e);
}
});
t.start();
}
use of com.nextcloud.client.account.User in project android by nextcloud.
the class UsersAndGroupsSearchProvider method searchForUsersOrGroups.
private Cursor searchForUsersOrGroups(Uri uri) {
String lastPathSegment = uri.getLastPathSegment();
if (lastPathSegment == null) {
throw new IllegalArgumentException("Wrong URI passed!");
}
// need to trust on the AccountUtils to get the current account since the query in the client side is not
// directly started by our code, but from SearchView implementation
User user = accountManager.getUser();
String userQuery = lastPathSegment.toLowerCase(Locale.ROOT);
// request to the OC server about users and groups matching userQuery
GetShareesRemoteOperation searchRequest = new GetShareesRemoteOperation(userQuery, REQUESTED_PAGE, RESULTS_PER_PAGE);
RemoteOperationResult result = searchRequest.execute(user.toPlatformAccount(), getContext());
List<JSONObject> names = new ArrayList<>();
if (result.isSuccess()) {
for (Object o : result.getData()) {
names.add((JSONObject) o);
}
} else {
showErrorMessage(result);
}
MatrixCursor response = null;
// convert the responses from the OC server to the expected format
if (names.size() > 0) {
if (getContext() == null) {
throw new IllegalArgumentException("Context may not be null!");
}
response = new MatrixCursor(COLUMNS);
Uri userBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_USER).build();
Uri groupBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_GROUP).build();
Uri roomBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_ROOM).build();
Uri remoteBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_REMOTE).build();
Uri emailBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_EMAIL).build();
Uri circleBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_CIRCLE).build();
FileDataStorageManager manager = new FileDataStorageManager(user, getContext().getContentResolver());
boolean federatedShareAllowed = manager.getCapability(user.getAccountName()).getFilesSharingFederationOutgoing().isTrue();
try {
Iterator<JSONObject> namesIt = names.iterator();
JSONObject item;
String displayName;
String subline = null;
Object icon = 0;
Uri dataUri;
int count = 0;
while (namesIt.hasNext()) {
item = namesIt.next();
dataUri = null;
displayName = null;
String userName = item.getString(GetShareesRemoteOperation.PROPERTY_LABEL);
String name = item.isNull("name") ? "" : item.getString("name");
JSONObject value = item.getJSONObject(GetShareesRemoteOperation.NODE_VALUE);
ShareType type = ShareType.fromValue(value.getInt(GetShareesRemoteOperation.PROPERTY_SHARE_TYPE));
String shareWith = value.getString(GetShareesRemoteOperation.PROPERTY_SHARE_WITH);
Status status;
JSONObject statusObject = item.optJSONObject(PROPERTY_STATUS);
if (statusObject != null) {
status = new Status(StatusType.valueOf(statusObject.getString(PROPERTY_STATUS).toUpperCase(Locale.US)), statusObject.isNull(PROPERTY_MESSAGE) ? "" : statusObject.getString(PROPERTY_MESSAGE), statusObject.isNull(PROPERTY_ICON) ? "" : statusObject.getString(PROPERTY_ICON), statusObject.isNull(PROPERTY_CLEAR_AT) ? -1 : statusObject.getLong(PROPERTY_CLEAR_AT));
} else {
status = new Status(StatusType.OFFLINE, "", "", -1);
}
switch(type) {
case GROUP:
displayName = userName;
icon = R.drawable.ic_group;
dataUri = Uri.withAppendedPath(groupBaseUri, shareWith);
break;
case FEDERATED:
if (federatedShareAllowed) {
icon = R.drawable.ic_user;
dataUri = Uri.withAppendedPath(remoteBaseUri, shareWith);
if (userName.equals(shareWith)) {
displayName = name;
subline = getContext().getString(R.string.remote);
} else {
String[] uriSplitted = shareWith.split("@");
displayName = name;
subline = getContext().getString(R.string.share_known_remote_on_clarification, uriSplitted[uriSplitted.length - 1]);
}
}
break;
case USER:
displayName = userName;
subline = (status.getMessage() == null || status.getMessage().isEmpty()) ? null : status.getMessage();
Uri.Builder builder = Uri.parse("content://com.nextcloud.android.providers.UsersAndGroupsSearchProvider/icon").buildUpon();
builder.appendQueryParameter("shareWith", shareWith);
builder.appendQueryParameter("displayName", displayName);
builder.appendQueryParameter("status", status.getStatus().toString());
if (!TextUtils.isEmpty(status.getIcon()) && !"null".equals(status.getIcon())) {
builder.appendQueryParameter("icon", status.getIcon());
}
icon = builder.build();
dataUri = Uri.withAppendedPath(userBaseUri, shareWith);
break;
case EMAIL:
icon = R.drawable.ic_email;
displayName = name;
subline = shareWith;
dataUri = Uri.withAppendedPath(emailBaseUri, shareWith);
break;
case ROOM:
icon = R.drawable.ic_talk;
displayName = userName;
dataUri = Uri.withAppendedPath(roomBaseUri, shareWith);
break;
case CIRCLE:
icon = R.drawable.ic_circles;
displayName = userName;
dataUri = Uri.withAppendedPath(circleBaseUri, shareWith);
break;
default:
break;
}
if (displayName != null && dataUri != null) {
response.newRow().add(// BaseColumns._ID
count++).add(// SearchManager.SUGGEST_COLUMN_TEXT_1
displayName).add(// SearchManager.SUGGEST_COLUMN_TEXT_2
subline).add(// SearchManager.SUGGEST_COLUMN_ICON_1
icon).add(dataUri);
}
}
} catch (JSONException e) {
Log_OC.e(TAG, "Exception while parsing data of users/groups", e);
}
}
return response;
}
Aggregations