summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2020-04-17 08:26:00 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2020-04-17 08:26:00 +0200
commit111346e29d957c631bc7f892f597e3f805932435 (patch)
tree36b640f2097ce0a6e577adce010b2db045d63553
parent872e74b8ec7a67dd6db597ea4e742c3faa169c93 (diff)
Fix app init & initialstate
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r--appinfo/app.php54
-rw-r--r--appinfo/info.xml10
-rw-r--r--lib/AppInfo/Application.php70
-rw-r--r--lib/Controller/PageController.php17
-rw-r--r--src/models/rfcProps.js6
-rw-r--r--src/services/initialstate.js42
6 files changed, 110 insertions, 89 deletions
diff --git a/appinfo/app.php b/appinfo/app.php
index 3ad6cea1..f9e8863b 100644
--- a/appinfo/app.php
+++ b/appinfo/app.php
@@ -1,41 +1,27 @@
<?php
/**
- * Nextcloud - contacts
+ * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>
*
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @author Hendrik Leppelsack <hendrik@leppelsack.de>
- * @copyright Hendrik Leppelsack 2015
*/
-namespace OCA\Contacts\AppInfo;
-
-use OCP\AppFramework\App;
-
-$app = new App('contacts');
-$container = $app->getContainer();
-
-$container->query('OCP\INavigationManager')->add(function () use ($container) {
- $urlGenerator = $container->query('OCP\IURLGenerator');
- $l10n = $container->query('OCP\IL10N');
- return [
- // the string under which your app will be referenced in Nextcloud
- 'id' => 'contacts',
-
- // sorting weight for the navigation. The higher the number, the higher
- // will it be listed in the navigation
- 'order' => 4,
-
- // the route that will be shown on startup
- 'href' => $urlGenerator->linkToRoute('contacts.page.index'),
-
- // the icon that will be shown in the navigation
- // this file needs to exist in img/
- 'icon' => $urlGenerator->imagePath('contacts', 'app.svg'),
+use OCA\Contacts\AppInfo\Application;
- // the title of your application. This will be used in the
- // navigation or on the settings page of your app
- 'name' => $l10n->t('Contacts'),
- ];
-});
+$app = \OC::$server->query(Application::class);
+$app->register();
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 15e2b9a8..3be7b1d9 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -11,25 +11,33 @@
* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!
* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.
</description>
+
<version>3.3.0</version>
<licence>agpl</licence>
+
<author>John Molakvoæ</author>
<author>Team Popcorn</author>
+
<documentation>
<user>https://docs.nextcloud.com/server/stable/user_manual/pim/contacts.html</user>
<admin>https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/occ_command.html?highlight=occ%20commands#dav-label</admin>
<developer>https://github.com/nextcloud/contacts#build-the-app</developer>
</documentation>
+ <screenshot>https://raw.githubusercontent.com/nextcloud/screenshots/master/apps/Contacts/contacts.png</screenshot>
+
<category>office</category>
<category>social</category>
<category>organization</category>
+
<website>https://github.com/nextcloud/contacts#readme</website>
<bugs>https://github.com/nextcloud/contacts/issues</bugs>
<repository type="git">https://github.com/nextcloud/contacts.git</repository>
- <screenshot>https://raw.githubusercontent.com/nextcloud/screenshots/master/apps/Contacts/contacts.png</screenshot>
+
+
<dependencies>
<nextcloud min-version="17" max-version="19" />
</dependencies>
+
<contactsmenu>
<provider>OCA\Contacts\ContactsMenu\Providers\DetailsProvider</provider>
</contactsmenu>
diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php
new file mode 100644
index 00000000..3f382cf9
--- /dev/null
+++ b/lib/AppInfo/Application.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\Contacts\AppInfo;
+use OCP\AppFramework\App;
+use OCP\IURLGenerator;
+use OCP\IL10N;
+use OCP\INavigationManager;
+
+class Application extends App {
+
+ const APP_ID = 'contacts';
+
+ public function __construct() {
+ parent::__construct(self::APP_ID);
+ }
+
+ public function register() {
+ $server = $this->getContainer()->getServer();
+
+ /** @var INavigationManager $navigationManager */
+ $navigationManager = $server->query(INavigationManager::class);
+
+ /** @var IURLGenerator $urlGenerator */
+ $urlGenerator = $server->query(IURLGenerator::class);
+
+ /** @var IL10N $l10n */
+ $l10n = $server->getL10N(self::APP_ID);
+
+ $navigationManager->add([
+ // the string under which your app will be referenced in Nextcloud
+ 'id' => self::APP_ID,
+
+ // sorting weight for the navigation. The higher the number, the higher
+ // will it be listed in the navigation
+ 'order' => 4,
+
+ // the route that will be shown on startup
+ 'href' => $urlGenerator->linkToRoute('contacts.page.index'),
+
+ // the icon that will be shown in the navigation
+ // this file needs to exist in img/
+ 'icon' => $urlGenerator->imagePath(self::APP_ID, 'app.svg'),
+
+ // the title of your application. This will be used in the
+ // navigation or on the settings page of your app
+ 'name' => $l10n->t('Contacts'),
+ ]);
+
+ }
+}
diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php
index add97dfb..4878e283 100644
--- a/lib/Controller/PageController.php
+++ b/lib/Controller/PageController.php
@@ -25,7 +25,7 @@ namespace OCA\Contacts\Controller;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\TemplateResponse;
-// use OCP\IInitialStateService;
+use OCP\IInitialStateService;
use OCP\IConfig;
use OCP\L10N\IFactory;
use OCP\IRequest;
@@ -45,12 +45,12 @@ class PageController extends Controller {
public function __construct(string $AppName,
IRequest $request,
IConfig $config,
- // IInitialStateService $initialStateService,
+ IInitialStateService $initialStateService,
IFactory $languageFactory) {
parent::__construct($AppName, $request);
$this->appName = $AppName;
- // $this->initialStateService = $initialStateService;
+ $this->initialStateService = $initialStateService;
$this->languageFactory = $languageFactory;
$this->config = $config;
}
@@ -64,12 +64,9 @@ class PageController extends Controller {
public function index(): TemplateResponse {
$locales = $this->languageFactory->findAvailableLocales();
$defaultProfile = $this->config->getAppValue($this->appName, 'defaultProfile', 'HOME');
- // TODO: use initialStateService once min-version is 16!
- // $this->initialStateService->provideInitialState($this->appName, 'locales', $locales);
- // $this->initialStateService->provideInitialState($this->appName, 'defaultProfile', $defaultProfile);
- return new TemplateResponse(
- 'contacts',
- 'main',
- ['locales' => json_encode($locales), 'defaultProfile'=> json_encode($defaultProfile)]); // templates/main.php
+
+ $this->initialStateService->provideInitialState($this->appName, 'locales', $locales);
+ $this->initialStateService->provideInitialState($this->appName, 'defaultProfile', $defaultProfile);
+ return new TemplateResponse($this->appName, 'main');
}
}
diff --git a/src/models/rfcProps.js b/src/models/rfcProps.js
index fcf44247..e74d17c5 100644
--- a/src/models/rfcProps.js
+++ b/src/models/rfcProps.js
@@ -20,8 +20,7 @@
*
*/
import { VCardTime } from 'ical.js'
-// import { loadState } from '@nextcloud/initial-state'
-import { loadState } from '../services/initialstate'
+import { loadState } from '@nextcloud/initial-state'
import ActionCopyNtoFN from '../components/Actions/ActionCopyNtoFN'
import ActionToggleYear from '../components/Actions/ActionToggleYear'
@@ -37,6 +36,9 @@ const locales = localesState
}))
: []
+console.debug('Initial state loaded', 'defaultProfileState', defaultProfileState)
+console.debug('Initial state loaded', 'localesState', localesState)
+
const properties = {
nickname: {
readableName: t('contacts', 'Nickname'),
diff --git a/src/services/initialstate.js b/src/services/initialstate.js
deleted file mode 100644
index 6687236f..00000000
--- a/src/services/initialstate.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * @copyright Copyright (c) 2019 Roeland Jago Douma <roeland@famdouma.nl>
- *
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-/**
- * @namespace OCP.InitialState
- */
-
-export function loadState(app, key) {
- const elem = document.querySelector(`#initial-state-${app}-${key}`)
- if (elem === null) {
- const msg = `Could not find initial state ${key} of ${app}`
- console.debug(msg)
- throw new Error(msg)
- }
-
- try {
- return JSON.parse(atob(elem.value))
- } catch (e) {
- const msg = `Could not parse initial state ${key} of ${app}`
- console.debug(msg)
- throw new Error(msg)
- }
-}