Completed
Push — master ( 5b6d3c...e19d53 )
by Marcel
03:17
created

DarkModeManager   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Test Coverage

Coverage 48.28%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 23
c 1
b 0
f 0
dl 0
loc 53
ccs 14
cts 29
cp 0.4828
rs 10
wmc 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A setDarkMode() 0 6 2
A disableDarkMode() 0 2 1
A enableDarkMode() 0 2 1
A __construct() 0 3 1
A isDarkModeEnabled() 0 8 2
A getUser() 0 14 3
1
<?php
2
3
namespace App\DarkMode;
4
5
use App\Entity\User;
6
use App\Repository\UserRepositoryInterface;
7
use SchoolIT\CommonBundle\DarkMode\DarkModeManagerInterface;
8
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
9
10
class DarkModeManager implements DarkModeManagerInterface {
11
12
    private const Key = 'dark_mode.enabled';
13
14
    private $tokenStorage;
15
    private $userRepository;
16
17 7
    public function __construct(TokenStorageInterface $tokenStorage, UserRepositoryInterface $userRepository) {
18 7
        $this->tokenStorage = $tokenStorage;
19 7
        $this->userRepository = $userRepository;
20 7
    }
21
22 2
    private function getUser(): ?User {
23 2
        $token = $this->tokenStorage->getToken();
24
25 2
        if ($token === null) {
26
            return null;
27
        }
28
29 2
        $user = $token->getUser();
30
31 2
        if (!$user instanceof User) {
32
            return null;
33
        }
34
35 2
        return $user;
36
    }
37
38
    private function setDarkMode(bool $isDarkModeEnabled): void {
39
        $user = $this->getUser();
40
41
        if ($user !== null) {
42
            $user->setData(static::Key, $isDarkModeEnabled);
43
            $this->userRepository->persist($user);
44
        }
45
    }
46
47
    public function enableDarkMode(): void {
48
        $this->setDarkMode(true);
49
    }
50
51
    public function disableDarkMode(): void {
52
        $this->setDarkMode(false);
53
    }
54
55 2
    public function isDarkModeEnabled(): bool {
56 2
        $user = $this->getUser();
57
58 2
        if ($user !== null) {
59 2
            return $user->getData(static::Key, false) === true;
60
        }
61
62
        return false;
63
    }
64
}