-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
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
IUserConfig #47658
IUserConfig #47658
Conversation
6d81b97
to
a9e2a38
Compare
e9ec009
to
cda7029
Compare
1fbb6a9
to
317202a
Compare
c78f304
to
979ecee
Compare
979ecee
to
41ba78f
Compare
8edb1c1
to
e510535
Compare
f71bb7d
to
e24d29a
Compare
32c209d
to
b80315b
Compare
b80315b
to
0c489af
Compare
0c489af
to
6ae7f9f
Compare
ceb814d
to
a219133
Compare
lib/private/UserPreferences.php
Outdated
$value = $cache[$app][$key]; | ||
try { | ||
$this->decryptSensitiveValue($userId, $app, $key, $value); | ||
$value = $this->convertTypedValue($value, $typedAs ?? $this->getValueType($userId, (string)$app, $key, $lazy)); |
Check failure
Code scanning / Psalm
RedundantCast
lib/private/UserPreferences.php
Outdated
* @param string $value preference value | ||
* @param bool $caseInsensitive non-case-sensitive search, only works if $value is a string | ||
* | ||
* @return list<string> |
Check failure
Code scanning / Psalm
MoreSpecificReturnType
lib/private/UserPreferences.php
Outdated
* @since 31.0.0 | ||
*/ | ||
public function searchUsersByValueString(string $app, string $key, string $value, bool $caseInsensitive = false): array { | ||
return $this->searchUsersByTypedValue($app, $key, $value, $caseInsensitive); |
Check failure
Code scanning / Psalm
LessSpecificReturnStatement
lib/private/UserPreferences.php
Outdated
* @param string $key preference key | ||
* @param array $values list of preference values | ||
* | ||
* @return list<string> |
Check failure
Code scanning / Psalm
MoreSpecificReturnType
lib/private/UserPreferences.php
Outdated
* @since 31.0.0 | ||
*/ | ||
public function searchUsersByValues(string $app, string $key, array $values): array { | ||
return $this->searchUsersByTypedValue($app, $key, $values); |
Check failure
Code scanning / Psalm
LessSpecificReturnStatement
96366be
to
4141c8a
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.
Code is fine, but still want to confirm we want this name.
Reason: We use app config and system config and this was config->getUserValue.
So UserConfig
might make more sense.
Yet all other places we have words for this refer it as user settings (documentation, occ commands etc), so maybe UserSettings
. The only place we have that call it preferences is the DB table.
I am fine with anything regarding this if its agreed :)
c9ec4ca
to
97ab26e
Compare
So, it has been renamed to |
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.
🥳
Signed-off-by: Maxence Lange <[email protected]>
Signed-off-by: Maxence Lange <[email protected]>
Signed-off-by: Maxence Lange <[email protected]>
Signed-off-by: Maxence Lange <[email protected]>
Signed-off-by: Maxence Lange <[email protected]>
97ab26e
to
5b4f190
Compare
Please send a follow-up and increase the version to trigger the migration. |
An exception occurred while executing a query: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'type' in 'field list' /home/richard/src/nextcloud/master/lib/private/DB/Exceptions/DbalException.php at 54 |
* @throws \OCP\PreConditionNotMetException if a precondition is specified and is not met | ||
* @throws \UnexpectedValueException when trying to store an unexpected value | ||
* @deprecated 31.0.0 - use {@see IUserConfig} directly |
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.
https://docs.nextcloud.com/server/latest/developer_manual/digging_deeper/api.html#php-unstable-api
Code from the OCP namespace must never mention anything coming from the NCU namespace. It can not require it as an argument, constant or return something from NCU.
So you can not deprecate this and neither the public interface.
* @return string | ||
* @deprecated 31.0.0 - use {@see IUserConfig} directly |
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.
same for all methods
💥 This PR breaks talks tests. |
string $userId, | ||
string $app, | ||
string $key, | ||
string $default = '', |
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.
Breaking change, before mixed
was documented and no type was casted.
At least null is used by apps and was used even in server's own method (setUserValue)
string $key, | ||
string $default = '', | ||
?bool $lazy = false, | ||
): string { |
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.
When the default value is "widen" again, the return type also needs to be
Please also document this |
$userPreferences = \OCP\Server::get(IUserConfig::class); | ||
if ($preCondition !== null) { | ||
try { | ||
if ($userPreferences->getValueMixed($userId, $appName, $key) !== (string)$preCondition) { |
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.
this is a behaviour change, previously the precondition did not fail, when the value is not set in the database.
* SPDX-License-Identifier: AGPL-3.0-or-later | ||
*/ | ||
|
||
namespace NCU\Config\Exceptions; |
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.
Please create a documentation for this new Namespace and the way it should work (when is it going to become stable, when can devs use it... etc)
IConfig
's preferences-related method