-
Notifications
You must be signed in to change notification settings - Fork 32
feat: activity support #2002
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
feat: activity support #2002
Conversation
01bac38
to
efc2122
Compare
can you please add import support 🙏? It can helps me a lot for #1801 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if this is intentional or not, but if you change a column name, the activity log that references the column still uses the old name which can be confusing
efc2122
to
85c62c1
Compare
@enjeck Since we use the activity log to track the object's history, I think we should respect the column name at the time the action was logged |
I agree! |
99bc822
to
48e8f85
Compare
switch ($subjectIdentifier) { | ||
case self::SUBJECT_TABLE_CREATE: | ||
$subject = $ownActivity ? $l->t('You have created a new table {table}'): $l->t('{user} has created a new table {table}'); | ||
break; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this the right way to deal with translations with params? I figured it would be something using square brackets e.g [table]
, as described in https://docs.nextcloud.com/server/latest/developer_manual/basics/translations.html#php-backend.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@luka-nextcloud Are you done here? Because from reading #1897, there are some requirements listed there and I wonder if we will be covering them all here
@enjeck In my opinion, we are done for now. The remaining requirement is clean-up schedule (number 5 and 6) which I think should be discussed and done from the activity app. |
Signed-off-by: Luka Trovic <[email protected]>
48e8f85
to
b31e436
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great effort @luka-nextcloud 🙇 Everything looks good and works (two glitches, nothing big). Happy about this!
There are quick formal matters: please add declare(strict_types=1);
to all new classes and add type hints and return types to the methods that do not have them (typically missing in some of the new classes).
And smaller functional cases:
- table deletion activity did not show up for me (owner of the table was someone else), but only for this someone else.
- Renaming a table, and Description update, have an issue with activity formatting or so: Rich subject or a parameter for "{user} has renamed the table {before} to {table}" is malformed
Backend-wise all is good. The frontend-usage is nice as well, I didn't check the code there though. If the items mentioned above can be addressed, green lights from my side.
private IManager $manager, | ||
private IFactory $l10nFactory, | ||
private TableMapper $tableMapper, | ||
private Row2Mapper $rowMapper, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
unused
public const SUBJECT_PARAMS_MAX_LENGTH = 4000; | ||
public const SHORTENED_MAX_LENGTH = 2000; | ||
public const ROW_NAME_MAX_LENGTH = 20; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seem to be unusued?
private $l10n; | ||
private $urlGenerator; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
provide type or use property promotion
/** @var IL10N */ | ||
protected $l; | ||
|
||
/** | ||
* @param IL10N $l | ||
*/ | ||
public function __construct(IL10N $l) { | ||
$this->l = $l; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/** @var IL10N */ | |
protected $l; | |
/** | |
* @param IL10N $l | |
*/ | |
public function __construct(IL10N $l) { | |
$this->l = $l; | |
} | |
public function __construct(protected IL10N $l) { | |
} |
) { | ||
} | ||
|
||
public function parse($language, IEvent $event, ?IEvent $previousEvent = null): IEvent { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
public function parse($language, IEvent $event, ?IEvent $previousEvent = null): IEvent { | |
public function parse(string $language, IEvent $event, ?IEvent $previousEvent = null): IEvent { |
return []; | ||
} | ||
$members = $circle->getMembers(); | ||
return array_map(fn ($member) => $member->getUserId(), $members); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
return array_map(fn ($member) => $member->getUserId(), $members); | |
return array_map(static fn ($member) => $member->getUserId(), $members); |
/** @var Share $share */ | ||
foreach ($shares as $share) { | ||
if ($share->getReceiverType() === ShareReceiverType::USER) { | ||
$sharedWithUserIds[] = $share->getReceiver(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
consider using the user id as key. Instead of array_unique()
later on, only array_keys()
can be returned. Then array_flip()
may help with array_merge
.
There might be a lot of users in the result set, this would take some short cuts in cpu and memory in such cases.
'micromark-factory-title', | ||
'micromark-util-normalize-identifier', | ||
'micromark-factory-whitespace', | ||
], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure what this removal is about, but if it is some cleanup of unnecessary things (smells like it!), all cool. I want to double check that this is not something unintended.
$columns .= ', '; | ||
} | ||
} | ||
$subject = $ownActivity ? $l->t('You have updated cell(s) ' . $columns . ' on row {row} in table {table}') : $l->t('{user} has updated cell(s) ' . $columns . ' on row {row} in table {table}'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
$subject = $ownActivity ? $l->t('You have updated cell(s) ' . $columns . ' on row {row} in table {table}') : $l->t('{user} has updated cell(s) ' . $columns . ' on row {row} in table {table}'); | |
$subject = $ownActivity ? $l->t('You have updated one or more cells ' . $columns . ' on row {row} in table {table}') : $l->t('{user} has updated one or more cells ' . $columns . ' on row {row} in table {table}'); |
The bracket is not that natural to read. But if we can figure out whether is one or more we can use the plural functions.
Resolves: #1897