diff --git a/src/api/spaceapi/controllers/spaceapi.ts b/src/api/spaceapi/controllers/spaceapi.ts
index 005f57a..9182b25 100644
--- a/src/api/spaceapi/controllers/spaceapi.ts
+++ b/src/api/spaceapi/controllers/spaceapi.ts
@@ -5,12 +5,13 @@ const SPACE_API_VERSION = '15';
/* Utils */
-const isEmpty = (x: A): boolean =>
- x == null
- ? true
- : Object.keys(x).length === 0
- ? String(x).length === 0
- : false;
+const isEmpty = (x: A): boolean => {
+ if (x == null) return true;
+ if (Array.isArray(x)) return x.length === 0;
+ if (typeof x === 'string') return x.trim().length === 0;
+ if (typeof x === 'object') return Object.keys(x).length === 0;
+ return false;
+};
const pickFields =
(fields: Array) =>
@@ -63,9 +64,29 @@ export default ({ strapi }: { strapi: Core.Strapi }) => ({
],
});
- result.space = hackspace.space;
- result.logo = absoluteURL(origin)(hackspace?.logo.url);
- result.url = hackspace.url;
+ /* */
+
+ if (isEmpty(hackspace)) {
+ return {};
+ }
+
+ /* */
+
+ if (!isEmpty(hackspace.space)) {
+ result.space = hackspace.space;
+ }
+
+ /* */
+
+ if (!isEmpty(hackspace.logo)) {
+ result.logo = absoluteURL(origin)(hackspace.logo?.url);
+ }
+
+ /* */
+
+ if (!isEmpty(hackspace.url)) {
+ result.url = hackspace.url;
+ }
/* */
@@ -136,7 +157,7 @@ export default ({ strapi }: { strapi: Core.Strapi }) => ({
/* */
if (!isEmpty(hackspace.contact)) {
- result.contact = pickFields([
+ const contactDraft = pickFields([
'phone',
'sip',
'irc',
@@ -154,6 +175,10 @@ export default ({ strapi }: { strapi: Core.Strapi }) => ({
'mumble',
])(hackspace.contact);
+ if (!isEmpty(contactDraft)) {
+ result.contact = contactDraft;
+ }
+
if (!isEmpty(hackspace.contact.keymasters)) {
result.contact.keymasters = hackspace.contact.keymasters.map(
pickFields([