setDisplayActions(false);
}
-void FileActivityListModel::load(AccountState *accountState, const QString &localPath)
+void FileActivityListModel::load(AccountState *accountState, const int objectId)
{
Q_ASSERT(accountState);
if (!accountState || currentlyFetching()) {
}
setAccountState(accountState);
- const auto folder = FolderMan::instance()->folderForPath(localPath);
- if (!folder) {
- return;
- }
-
- const auto file = folder->fileFromLocalPath(localPath);
- SyncJournalFileRecord fileRecord;
- if (!folder->journalDb()->getFileRecord(file, &fileRecord) || !fileRecord.isValid()) {
- return;
- }
-
- _fileId = fileRecord._fileId;
+ _objectId = objectId;
slotRefreshActivity();
}
QUrlQuery params;
params.addQueryItem(QStringLiteral("sort"), QStringLiteral("asc"));
params.addQueryItem(QStringLiteral("object_type"), "files");
- params.addQueryItem(QStringLiteral("object_id"), _fileId);
+ params.addQueryItem(QStringLiteral("object_id"), QString::number(_objectId));
job->addQueryParams(params);
setDoneFetching(true);
setHideOldActivities(true);
explicit FileActivityListModel(QObject *parent = nullptr);
public slots:
- void load(AccountState *accountState, const QString &fileId);
+ void load(AccountState *accountState, const int objectId);
protected:
void startFetchJob() override;
private:
- QString _fileId;
+ int _objectId;
};
}
void SocketApi::processFileActivityRequest(const QString &localFile)
{
const auto fileData = FileData::get(localFile);
- emit fileActivityCommandReceived(fileData.serverRelativePath, fileData.localPath);
+ emit fileActivityCommandReceived(fileData.serverRelativePath, fileData.journalRecord().numericFileId().toInt());
}
void SocketApi::processShareRequest(const QString &localFile, SocketListener *listener, ShareDialogStartPage startPage)
signals:
void shareCommandReceived(const QString &sharePath, const QString &localPath, ShareDialogStartPage startPage);
- void fileActivityCommandReceived(const QString &sharePath, const QString &localPath);
+ void fileActivityCommandReceived(const QString &objectName, const int objectId);
private slots:
void slotNewConnection();
void hideWindow();
void showWindow();
void openShareDialog(const QString &sharePath, const QString &localPath);
- void showFileActivityDialog(const QString &sharePath, const QString &localPath);
+ void showFileActivityDialog(const QString &objectName, const int objectId);
public slots:
void slotNewUserSelected();
property bool isFileActivityList: false
- signal showFileActivity(string displayPath, string absolutePath)
+ signal showFileActivity(string objectName, int objectId)
signal activityItemClicked(int index)
contentWidth: availableWidth
flickable: activityList
onClicked: {
if (model.isCurrentUserFileActivity) {
- showFileActivity(model.displayPath, model.absolutePath)
+ showFileActivity(model.objectName, model.objectId)
} else {
activityItemClicked(model.index)
}
flags: Systray.useNormalWindow ? Qt.Window : Qt.Dialog | Qt.FramelessWindowHint\r
\r
\r
- property var fileActivityDialogAbsolutePath: ""\r
+ property int fileActivityDialogObjectId: -1\r
readonly property int maxMenuHeight: Style.trayWindowHeight - Style.trayWindowHeaderHeight - 2 * Style.trayWindowBorderWidth\r
\r
- function openFileActivityDialog(displayPath, absolutePath) {\r
- fileActivityDialogLoader.displayPath = displayPath\r
- fileActivityDialogLoader.absolutePath = absolutePath\r
- fileActivityDialogLoader.refresh()\r
+ function openFileActivityDialog(objectName, objectId) {\r
+ fileActivityDialogLoader.objectName = objectName;\r
+ fileActivityDialogLoader.objectId = objectId;\r
+ fileActivityDialogLoader.refresh();\r
}\r
\r
Component.onCompleted: Systray.forceWindowInit(trayWindow)\r
Systray.setClosed();\r
}\r
\r
- function onShowFileActivityDialog(displayPath, absolutePath) {\r
- openFileActivityDialog(displayPath, absolutePath)\r
+ function onShowFileActivityDialog(objectName, objectId) {\r
+ openFileActivityDialog(objectName, objectId)\r
}\r
}\r
\r
activeFocusOnTab: true\r
model: activityModel\r
onShowFileActivity: {\r
- openFileActivityDialog(displayPath, absolutePath)\r
+ openFileActivityDialog(objectName, objectId)\r
}\r
onActivityItemClicked: {\r
model.slotTriggerDefaultAction(index)\r
Loader {\r
id: fileActivityDialogLoader\r
\r
- property string displayPath: ""\r
- property string absolutePath: ""\r
+ property string objectName: ""\r
+ property int objectId: -1\r
\r
function refresh() {\r
active = true\r
- item.model.load(activityModel.accountState, absolutePath)\r
+ item.model.load(activityModel.accountState, objectId)\r
item.show()\r
}\r
\r
active: false\r
sourceComponent: FileActivityDialog {\r
- title: qsTr("%1 - File activity").arg(fileActivityDialogLoader.displayPath)\r
+ title: qsTr("%1 - File activity").arg(fileActivityDialogLoader.objectName)\r
onClosing: fileActivityDialogLoader.active = false\r
}\r
\r
Type _type;
qlonglong _id;
QString _fileAction;
+ int _objectId;
QString _objectType;
+ QString _objectName;
QString _subject;
QString _subjectRich;
QHash<QString, RichSubjectParameter> _subjectRichParameters;
auto roles = QAbstractListModel::roleNames();
roles[DisplayPathRole] = "displayPath";
roles[PathRole] = "path";
- roles[AbsolutePathRole] = "absolutePath";
roles[DisplayLocationRole] = "displayLocation";
roles[LinkRole] = "link";
roles[MessageRole] = "message";
roles[ActionsLinksForActionButtonsRole] = "linksForActionButtons";
roles[ActionTextColorRole] = "activityTextTitleColor";
roles[ObjectTypeRole] = "objectType";
+ roles[ObjectIdRole] = "objectId";
+ roles[ObjectNameRole] = "objectName";
roles[PointInTimeRole] = "dateTime";
roles[DisplayActions] = "displayActions";
roles[ShareableRole] = "isShareable";
return getDisplayPath();
case PathRole:
return QFileInfo(getFilePath()).path();
- case AbsolutePathRole:
- return getFilePath();
case DisplayLocationRole:
return displayLocation();
case ActionsLinksRole: {
}
case ObjectTypeRole:
return a._objectType;
+ case ObjectIdRole:
+ return a._objectId;
+ case ObjectNameRole:
+ return a._objectName;
case ActionRole: {
switch (a._type) {
case Activity::ActivityType:
const auto activityUser = json.value(QStringLiteral("user")).toString();
a._type = Activity::ActivityType;
a._objectType = json.value(QStringLiteral("object_type")).toString();
+ a._objectId = json.value(QStringLiteral("object_id")).toInt();
+ a._objectName = json.value(QStringLiteral("object_name")).toString();
a._accName = ast->account()->displayName();
a._id = json.value(QStringLiteral("activity_id")).toInt();
a._fileAction = json.value(QStringLiteral("type")).toString();
ActionIconRole = Qt::UserRole + 1,
AccountRole,
ObjectTypeRole,
+ ObjectIdRole,
+ ObjectNameRole,
ActionsLinksRole,
ActionsLinksContextMenuRole,
ActionsLinksForActionButtonsRole,
MessageRole,
DisplayPathRole,
PathRole,
- AbsolutePathRole,
DisplayLocationRole, // Provides the display path to a file's parent folder, relative to Nextcloud root
LinkRole,
PointInTimeRole,
activity._file = item->_file;
activity._folder = folder->alias();
activity._fileAction = "";
+ activity._objectId = item->_fileId.toInt();
+ activity._objectName = item->_file;
const auto fileName = QFileInfo(item->_originalFile).fileName();
const auto type = index.data(OCC::ActivityListModel::ActionRole).toInt();
QVERIFY(type >= OCC::Activity::ActivityType);
- QVERIFY(!index.data(OCC::ActivityListModel::ObjectTypeRole).toInt());
QVERIFY(!index.data(OCC::ActivityListModel::AccountRole).toString().isEmpty());
QVERIFY(!index.data(OCC::ActivityListModel::ActionTextColorRole).toString().isEmpty());
QVERIFY(!index.data(OCC::ActivityListModel::ActionIconRole).toString().isEmpty());
QVERIFY(!index.data(OCC::ActivityListModel::PointInTimeRole).toString().isEmpty());
+ QVERIFY(index.data(OCC::ActivityListModel::ObjectTypeRole).canConvert<int>());
+ QVERIFY(index.data(OCC::ActivityListModel::ObjectNameRole).canConvert<QString>());
+ QVERIFY(index.data(OCC::ActivityListModel::ObjectIdRole).canConvert<int>());
QVERIFY(index.data(OCC::ActivityListModel::ActionsLinksRole).canConvert<QList<QVariant>>());
QVERIFY(index.data(OCC::ActivityListModel::ActionTextRole).canConvert<QString>());
QVERIFY(index.data(OCC::ActivityListModel::MessageRole).canConvert<QString>());