mirror of
https://github.com/nextcloud/server.git
synced 2026-06-14 19:20:35 -04:00
fix(files_sharing): dark avatar support
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
This commit is contained in:
parent
4a77fe3530
commit
8bed23288b
3 changed files with 23 additions and 8 deletions
|
|
@ -17,8 +17,12 @@ import { getCurrentUser } from '@nextcloud/auth'
|
|||
|
||||
import './sharingStatusAction.scss'
|
||||
|
||||
const isDarkMode = window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches === true
|
||||
|| document.querySelector('[data-themes*=dark]') !== null
|
||||
|
||||
const generateAvatarSvg = (userId: string, isGuest = false) => {
|
||||
const avatarUrl = generateUrl(isGuest ? '/avatar/guest/{userId}/32' : '/avatar/{userId}/32?guestFallback=true', { userId })
|
||||
const url = isDarkMode ? '/avatar/{userId}/32/dark' : '/avatar/{userId}/32'
|
||||
const avatarUrl = generateUrl(isGuest ? url : url + '?guestFallback=true', { userId })
|
||||
return `<svg width="32" height="32" viewBox="0 0 32 32"
|
||||
xmlns="http://www.w3.org/2000/svg" class="sharing-status__avatar">
|
||||
<image href="${avatarUrl}" height="32" width="32" />
|
||||
|
|
|
|||
|
|
@ -14,14 +14,13 @@ use OCP\AppFramework\Http\Attribute\FrontpageRoute;
|
|||
use OCP\AppFramework\Http\DataDisplayResponse;
|
||||
use OCP\AppFramework\Http\FileDisplayResponse;
|
||||
use OCP\AppFramework\Http\JSONResponse;
|
||||
use OCP\AppFramework\Http\RedirectResponse;
|
||||
use OCP\AppFramework\Http\Response;
|
||||
use OCP\Files\File;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\IAvatarManager;
|
||||
use OCP\ICache;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\IUserManager;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
|
|
@ -42,7 +41,6 @@ class AvatarController extends Controller {
|
|||
protected LoggerInterface $logger,
|
||||
protected ?string $userId,
|
||||
protected TimeFactory $timeFactory,
|
||||
protected IURLGenerator $urlGenerator,
|
||||
protected GuestAvatarController $guestAvatarController,
|
||||
) {
|
||||
parent::__construct($appName, $request);
|
||||
|
|
@ -58,7 +56,8 @@ class AvatarController extends Controller {
|
|||
*
|
||||
* @param string $userId ID of the user
|
||||
* @param int $size Size of the avatar
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string, X-NC-IsCustomAvatar: int}>|JSONResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @param bool $guestFallback Fallback to guest avatar if not found
|
||||
* @return FileDisplayResponse<Http::STATUS_OK|Http::STATUS_CREATED, array{Content-Type: string, X-NC-IsCustomAvatar?: int}>|JSONResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>|Response<Http::STATUS_INTERNAL_SERVER_ERROR, array{}>
|
||||
*
|
||||
* 200: Avatar returned
|
||||
* 404: Avatar not found
|
||||
|
|
@ -108,7 +107,8 @@ class AvatarController extends Controller {
|
|||
*
|
||||
* @param string $userId ID of the user
|
||||
* @param int $size Size of the avatar
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string, X-NC-IsCustomAvatar: int}>|JSONResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @param bool $guestFallback Fallback to guest avatar if not found
|
||||
* @return FileDisplayResponse<Http::STATUS_OK|Http::STATUS_CREATED, array{Content-Type: string, X-NC-IsCustomAvatar?: int}>|JSONResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>|Response<Http::STATUS_INTERNAL_SERVER_ERROR, array{}>
|
||||
*
|
||||
* 200: Avatar returned
|
||||
* 404: Avatar not found
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ namespace Tests\Core\Controller;
|
|||
|
||||
use OC\AppFramework\Utility\TimeFactory;
|
||||
use OC\Core\Controller\AvatarController;
|
||||
use OC\Core\Controller\GuestAvatarController;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\Files\File;
|
||||
use OCP\Files\IRootFolder;
|
||||
|
|
@ -42,13 +43,15 @@ use Psr\Log\LoggerInterface;
|
|||
class AvatarControllerTest extends \Test\TestCase {
|
||||
/** @var AvatarController */
|
||||
private $avatarController;
|
||||
/** @var GuestAvatarController */
|
||||
private $guestAvatarController;
|
||||
|
||||
/** @var IAvatar|\PHPUnit\Framework\MockObject\MockObject */
|
||||
private $avatarMock;
|
||||
/** @var IUser|\PHPUnit\Framework\MockObject\MockObject */
|
||||
private $userMock;
|
||||
/** @var ISimpleFile|\PHPUnit\Framework\MockObject\MockObject */
|
||||
private $avatarFile;
|
||||
|
||||
/** @var IAvatarManager|\PHPUnit\Framework\MockObject\MockObject */
|
||||
private $avatarManager;
|
||||
/** @var ICache|\PHPUnit\Framework\MockObject\MockObject */
|
||||
|
|
@ -83,6 +86,13 @@ class AvatarControllerTest extends \Test\TestCase {
|
|||
$this->avatarMock = $this->getMockBuilder('OCP\IAvatar')->getMock();
|
||||
$this->userMock = $this->getMockBuilder(IUser::class)->getMock();
|
||||
|
||||
$this->guestAvatarController = new GuestAvatarController(
|
||||
'core',
|
||||
$this->request,
|
||||
$this->avatarManager,
|
||||
$this->logger
|
||||
);
|
||||
|
||||
$this->avatarController = new AvatarController(
|
||||
'core',
|
||||
$this->request,
|
||||
|
|
@ -93,7 +103,8 @@ class AvatarControllerTest extends \Test\TestCase {
|
|||
$this->rootFolder,
|
||||
$this->logger,
|
||||
'userid',
|
||||
$this->timeFactory
|
||||
$this->timeFactory,
|
||||
$this->guestAvatarController,
|
||||
);
|
||||
|
||||
// Configure userMock
|
||||
|
|
|
|||
Loading…
Reference in a new issue