blob: 96e1bb7e3d65654e9fc89e929d304bbb60101eb6 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/drive/chromeos/drive_file_util.h"
#include <string>
#include "components/drive/chromeos/resource_metadata.h"
#include "components/drive/drive.pb.h"
#include "components/drive/file_system_core_util.h"
namespace drive {
namespace internal {
FileError GetStartPageToken(internal::ResourceMetadata* resource_metadata,
const std::string& team_drive_id,
std::string* out_value) {
DCHECK(resource_metadata);
DCHECK(out_value);
if (team_drive_id == util::kTeamDriveIdDefaultCorpus) {
return resource_metadata->GetStartPageToken(out_value);
}
std::string local_id;
FileError error =
resource_metadata->GetIdByResourceId(team_drive_id, &local_id);
if (error != FILE_ERROR_OK) {
DLOG(ERROR) << "Failed to get team drive local id.";
return error;
}
ResourceEntry entry;
error = resource_metadata->GetResourceEntryById(local_id, &entry);
if (error != FILE_ERROR_OK) {
DLOG(ERROR) << "Filed to get the team drive resource.";
return error;
}
DCHECK(entry.file_info().is_directory());
DCHECK_EQ(entry.parent_local_id(), util::kDriveTeamDrivesDirLocalId);
out_value->assign(entry.team_drive_root_specific_info().start_page_token());
return FILE_ERROR_OK;
}
FileError SetStartPageToken(internal::ResourceMetadata* resource_metadata,
const std::string& team_drive_id,
const std::string& value) {
DCHECK(resource_metadata);
if (team_drive_id == util::kTeamDriveIdDefaultCorpus) {
return resource_metadata->SetStartPageToken(value);
}
std::string local_id;
FileError error =
resource_metadata->GetIdByResourceId(team_drive_id, &local_id);
if (error != FILE_ERROR_OK) {
DLOG(ERROR) << "Failed to get team drive local id.";
return error;
}
ResourceEntry entry;
error = resource_metadata->GetResourceEntryById(local_id, &entry);
if (error != FILE_ERROR_OK) {
DLOG(ERROR) << "Failed to get the team drive resource.";
return error;
}
DCHECK(entry.file_info().is_directory());
DCHECK_EQ(entry.parent_local_id(), util::kDriveTeamDrivesDirLocalId);
entry.mutable_team_drive_root_specific_info()->set_start_page_token(value);
return resource_metadata->RefreshEntry(entry);
}
} // namespace internal
} // namespace drive