3860082966@qq.com 2 долоо хоног өмнө
parent
commit
946258dfc7

+ 4 - 1
projects/live-app/src/app/components/nav/nav.component.html

@@ -1,4 +1,7 @@
-<ion-header [translucent]="true" class="header">
+<ion-header [translucent]="true" [ngClass]="{
+  'header': true,
+  'pad-top-ios': deviceSer.isIOS
+}">
   <ion-toolbar class="toolbar">
     @if (type == 'back') {
       <ion-buttons slot="start" (click)="onBack()">

+ 7 - 3
projects/live-app/src/app/components/nav/nav.component.ts

@@ -1,22 +1,26 @@
 import { Component, Input, OnInit } from '@angular/core';
 import { ionicStandaloneModules } from '../../../modules/ionic-standalone.modules';
+import { DeviceService } from '../../../services/device.service';
+import { CommonModule } from '@angular/common';
 
 @Component({
   selector: 'nav',
   templateUrl: './nav.component.html',
   styleUrls: ['./nav.component.scss'],
   standalone: true,
-  imports: [...ionicStandaloneModules],
+  imports: [...ionicStandaloneModules,CommonModule],
 })
 export class NavComponent implements OnInit {
   @Input('type') type: string = 'back';
   @Input('title') title: string = '';
 
-  constructor() { }
+  constructor(
+    public deviceSer: DeviceService
+  ) { }
 
   ngOnInit() {
   }
-  onBack(){
+  onBack() {
     history.back()
   }
 }

+ 4 - 1
projects/live-app/src/modules/live/chat/chat.component.html

@@ -1,4 +1,7 @@
-<ion-header [translucent]="true" class="header">
+<ion-header [translucent]="true" [ngClass]="{
+  'header': true,
+  'pad-top-ios': deviceSer.isIOS
+}">
   <ion-toolbar class="toolbar">
     <ion-buttons slot="start" (click)="onBack()">
       <ion-icon

+ 3 - 1
projects/live-app/src/modules/live/chat/chat.component.ts

@@ -22,6 +22,7 @@ import { AiChatService } from '../../../services/aichart.service';
 import { AccountService } from '../../../services/account.service';
 import { CallModalComponent } from '../../../app/components/call-modal/call-modal.component';
 import { AppraiseComponent } from '../../../app/components/appraise/appraise.component';
+import { DeviceService } from '../../../services/device.service';
 
 @Component({
   selector: 'app-chat',
@@ -69,7 +70,8 @@ export class ChatComponent implements OnInit {
     private activateRoute: ActivatedRoute,
     public msgServe: MessageService,
     public aiServ: AiChatService,
-    public accServ: AccountService
+    public accServ: AccountService,
+    public deviceSer: DeviceService
   ) {
     msgServe.pageFun = this.updatePage;
     msgServe.pageFun();

+ 4 - 2
projects/live-app/src/modules/login/agreement/agreement.component.html

@@ -1,4 +1,6 @@
-<ion-header>
+<ion-header [ngClass]="{
+  'pad-top-ios': deviceSer.isIOS
+}">
   <ion-toolbar>
     <ion-buttons slot="end" (click)="dismiss()">
       <div style="margin-right: 20px">已知晓</div>
@@ -6,4 +8,4 @@
   </ion-toolbar>
 </ion-header>
 <ion-content class="ion-padding" [innerHTML]="agreement?.get('content')">
-</ion-content>
+</ion-content>

+ 5 - 2
projects/live-app/src/modules/login/agreement/agreement.component.ts

@@ -7,17 +7,20 @@ import {
   IonHeader,
   IonToolbar,
 } from '@ionic/angular/standalone';
+import { DeviceService } from '../../../services/device.service';
+import { CommonModule } from '@angular/common';
 
 @Component({
   selector: 'app-agreement',
   templateUrl: './agreement.component.html',
   styleUrls: ['./agreement.component.scss'],
   standalone: true,
-  imports: [LoginModule, IonContent, IonButtons, IonHeader, IonToolbar],
+  imports: [LoginModule, IonContent, IonButtons, IonHeader, IonToolbar,CommonModule],
 })
 export class AgreementComponent implements OnInit {
   @Input('agreement') agreement: any;
-  constructor(private modalController: ModalController) {}
+  constructor(private modalController: ModalController, public deviceSer: DeviceService
+  ) { }
 
   ngOnInit() {
     console.log(this.agreement);

+ 4 - 1
projects/live-app/src/modules/tabs/anthorhome/anthorhome.component.html

@@ -1,5 +1,8 @@
 <ion-content class="content">
-  <div class="header" [style.background-image]="'url(img/bg.png)'">
+  <div [ngClass]="{
+    'header': true,
+    'pad-top-ios': deviceSer.isIOS
+  }" [style.background-image]="'url(img/bg.png)'">
     <div class="top">
       <ion-searchbar
         animated="true"

+ 11 - 9
projects/live-app/src/modules/tabs/anthorhome/anthorhome.component.ts

@@ -15,6 +15,7 @@ import { provinceMap } from '../../../services/address';
 import { FormsModule } from '@angular/forms';
 import { InfiniteScrollCustomEvent } from '@ionic/core';
 import { MessageService } from '../../../services/message.service';
+import { DeviceService } from '../../../services/device.service';
 @Component({
   selector: 'app-anthorhome',
   templateUrl: './anthorhome.component.html',
@@ -71,7 +72,8 @@ export class AnthorhomeComponent implements OnInit {
     private toastController: ToastController,
     private aiServ: AiChatService,
     private msgSer: MessageService,
-    private datePipe: DatePipe
+    private datePipe: DatePipe,
+    public deviceSer: DeviceService
   ) {
     // province.unshift({
     //   provinceName: '全部',
@@ -178,14 +180,14 @@ export class AnthorhomeComponent implements OnInit {
       message: item?.get('content') || '',
       buttons: item?.get('url')
         ? [
-            { text: '关闭' },
-            {
-              text: '确定',
-              handler: () => {
-                this.router.navigate([item?.get('url')]);
-              },
+          { text: '关闭' },
+          {
+            text: '确定',
+            handler: () => {
+              this.router.navigate([item?.get('url')]);
             },
-          ]
+          },
+        ]
         : [{ text: '关闭' }],
     });
     await alert.present();
@@ -268,7 +270,7 @@ export class AnthorhomeComponent implements OnInit {
       toast.present();
       return;
     }
-    if(!this.pushUserMap.has(this.checkUser.uid!)){
+    if (!this.pushUserMap.has(this.checkUser.uid!)) {
       await this.msgSer.subscribeMessage(this.checkUser.uid!, {
         presence: true,
       }); //进入对方主播频道发送聊天邀请

+ 25 - 67
projects/live-app/src/modules/tabs/home/home.component.html

@@ -1,19 +1,13 @@
 <ion-content class="content">
-  <div class="header" [style.background-image]="'url(img/bg.png)'">
+  <div [ngClass]="{
+    'header': true,
+    'pad-top-ios': deviceSer.isIOS
+  }" [style.background-image]="'url(img/bg.png)'">
     <div class="top">
-      <ion-segment
-        [scrollable]="true"
-        (ionChange)="segmentChanged($event)"
-        layout="icon-bottom"
-        [value]="currentValue"
-        mode="md"
-      >
+      <ion-segment [scrollable]="true" (ionChange)="segmentChanged($event)" layout="icon-bottom" [value]="currentValue"
+        mode="md">
         @for (item of options; track $index) {
-        <ion-segment-button
-          (click)="getRoom(item?.value)"
-          [value]="item?.value"
-          class="tabs"
-        >
+        <ion-segment-button (click)="getRoom(item?.value)" [value]="item?.value" class="tabs">
           <ion-label>{{ item?.label }}</ion-label>
         </ion-segment-button>
         }
@@ -57,14 +51,8 @@
     </div>
   </div>
   <div class="bar">
-    <ion-select
-      label="主播列表"
-      [placeholder]="sex"
-      cancelText="关闭"
-      okText="确定"
-      (ionChange)="onChangeSex($event)"
-      interface="action-sheet"
-    >
+    <ion-select label="主播列表" [placeholder]="sex" cancelText="关闭" okText="确定" (ionChange)="onChangeSex($event)"
+      interface="action-sheet">
       <ion-select-option value="all">全部</ion-select-option>
       <ion-select-option value="女">女主播</ion-select-option>
       <ion-select-option value="男">男主播</ion-select-option>
@@ -73,28 +61,19 @@
       <div class="city" (click)="isOpenCity = true">
         <ion-icon name="location-outline"></ion-icon>{{ city ? city : "全部" }}
       </div>
-      <ion-icon
-        (click)="isColumn = !isColumn"
-        [name]="!isColumn ? 'grid' : 'list'"
-        style="font-size: 24px; color: #fe4d53"
-      ></ion-icon>
+      <ion-icon (click)="isColumn = !isColumn" [name]="!isColumn ? 'grid' : 'list'"
+        style="font-size: 24px; color: #fe4d53"></ion-icon>
     </div>
   </div>
-  <div
-    [ngClass]="{
+  <div [ngClass]="{
     'room-list': true,
     'room-list-column': isColumn,
-  }"
-  >
+  }">
     @for (item of roomList; track $index) {
-    <div
-      [ngClass]="{
+    <div [ngClass]="{
       'list-row': true,
       'list-row-column': isColumn,
-    }"
-      (click)="toUrl('user/profile/' + item.uid)"
-      [style.background-image]="'url(' + item?.cover + ')'"
-    >
+    }" (click)="toUrl('user/profile/' + item.uid)" [style.background-image]="'url(' + item?.cover + ')'">
       <div class="title-tag">在线聊天</div>
       @if (userList?.includes(item.uid)) {
       <div class="live-tag">
@@ -113,10 +92,7 @@
             {{ item.city }}
           </div>
           <div class="row-li" style="margin-left: 4px">
-            <img
-              src="https://file-cloud.fmode.cn/Qje9D4bqol/20241109/pctmvt110807052.png"
-              alt=""
-            />
+            <img src="https://file-cloud.fmode.cn/Qje9D4bqol/20241109/pctmvt110807052.png" alt="" />
             {{ item.birthdate }}
           </div>
         </div>
@@ -125,11 +101,7 @@
     }
   </div>
 </ion-content>
-<ion-modal
-  trigger="open-modal"
-  [isOpen]="isOpen"
-  (didDismiss)="onDidDismiss($event)"
->
+<ion-modal trigger="open-modal" [isOpen]="isOpen" (didDismiss)="onDidDismiss($event)">
   <ng-template>
     <ion-toolbar>
       <ion-buttons slot="start">
@@ -140,26 +112,18 @@
       </ion-buttons>
     </ion-toolbar>
     <ion-picker>
-      <ion-picker-column
-        [value]="currentValue"
-        (ionChange)="onIonChange($event)"
-      >
+      <ion-picker-column [value]="currentValue" (ionChange)="onIonChange($event)">
         @for (item of options; track $index) {
         <ion-picker-column-option value="{{ item?.value }}">{{
           item?.label
-        }}</ion-picker-column-option>
+          }}</ion-picker-column-option>
         }
       </ion-picker-column>
     </ion-picker>
   </ng-template>
 </ion-modal>
 
-<ion-modal
-  #modal
-  trigger="open-modal"
-  [isOpen]="isOpenCity"
-  backdropDismiss="false"
->
+<ion-modal #modal trigger="open-modal" [isOpen]="isOpenCity" backdropDismiss="false">
   <ng-template>
     <ion-toolbar>
       <ion-buttons slot="start">
@@ -170,26 +134,20 @@
       </ion-buttons>
     </ion-toolbar>
     <ion-picker>
-      <ion-picker-column
-        [value]="province"
-        (ionChange)="onIonChangeCity($event, 'province')"
-      >
+      <ion-picker-column [value]="province" (ionChange)="onIonChangeCity($event, 'province')">
         @for (item of provinceColumns; track $index) {
         <ion-picker-column-option value="{{ item }}">{{
           item
-        }}</ion-picker-column-option>
+          }}</ion-picker-column-option>
         }
       </ion-picker-column>
-      <ion-picker-column
-        [value]="city"
-        (ionChange)="onIonChangeCity($event, 'city')"
-      >
+      <ion-picker-column [value]="city" (ionChange)="onIonChangeCity($event, 'city')">
         @for (item of cityColumns; track $index) {
         <ion-picker-column-option value="{{ item }}">{{
           item
-        }}</ion-picker-column-option>
+          }}</ion-picker-column-option>
         }
       </ion-picker-column>
     </ion-picker>
   </ng-template>
-</ion-modal>
+</ion-modal>

+ 4 - 2
projects/live-app/src/modules/tabs/home/home.component.ts

@@ -13,6 +13,7 @@ import { CommonModule, DatePipe } from '@angular/common';
 import { provinceMap } from '../../../services/address';
 import { FormsModule } from '@angular/forms';
 import { BackgroundColorService } from '../../../services/background-color.service';
+import { DeviceService } from '../../../services/device.service';
 @Component({
   selector: 'app-home',
   templateUrl: './home.component.html',
@@ -92,12 +93,13 @@ export class HomeComponent implements OnInit {
   constructor(
     private loadingCtrl: LoadingController,
     private alertController: AlertController,
-    private activateRoute: ActivatedRoute,
+    // private activateRoute: ActivatedRoute,
     private connectTask: ConnectTaskService,
     private router: Router,
     private aiServ: AiChatService,
     private datePipe: DatePipe,
-    private backgroundColorService: BackgroundColorService
+    private backgroundColorService: BackgroundColorService,
+    public deviceSer:DeviceService
   ) {
     // province.unshift({
     //   provinceName: '全部',

+ 5 - 1
projects/live-app/src/modules/tabs/my/my.component.html

@@ -1,5 +1,9 @@
 <ion-content class="content">
-  <div class="header" [style.background-image]="'url(img/bg.png)'">
+  <div 
+  [ngClass]="{
+    'header': true,
+    'pad-top-ios': deviceSer.isIOS
+  }" [style.background-image]="'url(img/bg.png)'">
     <div class="user-dateil">
       @if(!loading){
       <app-avatar

+ 2 - 0
projects/live-app/src/modules/tabs/my/my.component.ts

@@ -11,6 +11,7 @@ import { ionicStandaloneModules } from '../../ionic-standalone.modules';
 import { DatePipe, CommonModule } from '@angular/common';
 import { AvatarComponent } from '../../../app/components/avatar/avatar.component';
 import { HttpService } from '../../../services/http.service';
+import { DeviceService } from '../../../services/device.service';
 @Component({
   selector: 'app-my',
   templateUrl: './my.component.html',
@@ -33,6 +34,7 @@ export class MyComponent implements OnInit {
     public aiServ: AiChatService,
     private accServ: AccountService,
     private http: HttpService,
+    public deviceSer:DeviceService
   ) {}
   tools: Array<{ icon: string; title: string; path: string }> = [
     {

+ 27 - 90
projects/live-app/src/modules/tabs/notice/notice.component.html

@@ -1,13 +1,10 @@
-<ion-header [translucent]="true" class="header">
+<ion-header [translucent]="true" [ngClass]="{
+  'header': true,
+  'pad-top-ios': deviceSer.isIOS
+}">
   <div class="top">
     <div class="more"></div>
-    <ion-segment
-      [scrollable]="true"
-      (ionChange)="segmentChanged($event)"
-      layout="icon-bottom"
-      value="notice"
-      mode="md"
-    >
+    <ion-segment [scrollable]="true" (ionChange)="segmentChanged($event)" layout="icon-bottom" value="notice" mode="md">
       <ion-segment-button value="notice" class="tabs" content-id="notice">
         <ion-label>消息</ion-label>
       </ion-segment-button>
@@ -16,24 +13,16 @@
       </ion-segment-button>
     </ion-segment>
     <div class="more">
-      <ion-button id="click-trigger"
-        ><ion-icon name="ellipsis-horizontal-outline"></ion-icon
-      ></ion-button>
+      <ion-button id="click-trigger"><ion-icon name="ellipsis-horizontal-outline"></ion-icon></ion-button>
     </div>
   </div>
 </ion-header>
 <ion-content class="content">
   <ion-searchbar animated="true" placeholder="搜索"></ion-searchbar>
-  <ion-popover
-    trigger="click-trigger"
-    [dismissOnSelect]="true"
-    triggerAction="click"
-  >
+  <ion-popover trigger="click-trigger" [dismissOnSelect]="true" triggerAction="click">
     <ng-template>
       <ion-list>
-        <ion-item class="clear" [button]="true" [detail]="false"
-          >已读所有消息</ion-item
-        >
+        <ion-item class="clear" [button]="true" [detail]="false">已读所有消息</ion-item>
       </ion-list>
     </ng-template>
   </ion-popover>
@@ -42,12 +31,7 @@
       <div class="notice-list" (touchmove)="onMousemove($event)">
         <ion-list>
           <ion-item class="li" (click)="toUrl('/account/noticelog')">
-            <img
-              src="img/notice.png"
-              class="avatar"
-              slot="start"
-              alt="avatar"
-            />
+            <img src="img/notice.png" class="avatar" slot="start" alt="avatar" />
             <div class="li-right">
               <div class="name">
                 系统消息
@@ -55,68 +39,36 @@
               </div>
               <!-- <div class="message-content">{{ "暂无" }}</div> -->
             </div>
-            <ion-icon
-              style="color: #afafaf"
-              name="chevron-forward-outline"
-            ></ion-icon>
+            <ion-icon style="color: #afafaf" name="chevron-forward-outline"></ion-icon>
           </ion-item>
 
           <ion-item class="li" (click)="toUrl('/live/call-log')">
-            <img
-              src="img/通话记录.png"
-              class="avatar"
-              slot="start"
-              alt="avatar"
-            />
+            <img src="img/通话记录.png" class="avatar" slot="start" alt="avatar" />
             <div class="li-right">
               <div class="name">通话记录</div>
               <div class="message-content"></div>
             </div>
-            <ion-icon
-              style="color: #afafaf"
-              name="chevron-forward-outline"
-            ></ion-icon>
+            <ion-icon style="color: #afafaf" name="chevron-forward-outline"></ion-icon>
           </ion-item>
           <ion-item class="li" (click)="toUrl('/live/chat')">
-            <img
-              src="img/亲密度.png"
-              class="avatar"
-              slot="start"
-              alt="avatar"
-            />
+            <img src="img/亲密度.png" class="avatar" slot="start" alt="avatar" />
 
             <div class="li-right">
               <div class="name">亲密度</div>
               <div class="message-content"></div>
             </div>
-            <ion-icon
-              style="color: #afafaf"
-              name="chevron-forward-outline"
-            ></ion-icon>
+            <ion-icon style="color: #afafaf" name="chevron-forward-outline"></ion-icon>
           </ion-item>
           <ion-item class="li" (click)="isOpen = true">
-            <img
-              src="img/客服.png"
-              class="avatar"
-              slot="start"
-              alt="avatar"
-            />
+            <img src="img/客服.png" class="avatar" slot="start" alt="avatar" />
             <div class="li-right">
               <div class="name">小客服</div>
               <div class="message-content"></div>
             </div>
-            <ion-icon
-              style="color: #afafaf"
-              name="chevron-forward-outline"
-            ></ion-icon>
+            <ion-icon style="color: #afafaf" name="chevron-forward-outline"></ion-icon>
           </ion-item>
           <ion-item class="li" (click)="toUrl('/live/chat/global_room')">
-            <img
-              src="img/世界频道.png"
-              class="avatar"
-              slot="start"
-              alt="avatar"
-            />
+            <img src="img/世界频道.png" class="avatar" slot="start" alt="avatar" />
             <div class="li-right">
               <div class="name">
                 世界频道
@@ -131,12 +83,8 @@
           </ion-item>
 
           @for (item of friends; track $index) {
-          <ion-item
-            class="li"
-            (click)="toUrl('/live/chat/' + item.channel)"
-            (touchstart)="startPress()"
-            (mousemove)="stopPress()"
-          >
+          <ion-item class="li" (click)="toUrl('/live/chat/' + item.channel)" (touchstart)="startPress()"
+            (mousemove)="stopPress()">
             <img [src]="item.avatar" class="avatar" slot="start" alt="avatar" />
             <div class="li-right">
               <div class="name">
@@ -145,8 +93,8 @@
               </div>
               <div class="message-content">
                 {{
-                  msgServe.messageMapList[item.channel]?.slice(-1)[0]
-                    ?.content || "暂无"
+                msgServe.messageMapList[item.channel]?.slice(-1)[0]
+                ?.content || "暂无"
                 }}
               </div>
             </div>
@@ -165,7 +113,7 @@
             </ion-avatar>
             <ion-label>{{
               item.nickname || item.name || "用户" + item.uid
-            }}</ion-label>
+              }}</ion-label>
           </ion-item>
           }
         </ion-list>
@@ -173,21 +121,10 @@
     </ion-segment-content>
   </ion-segment-view>
 </ion-content>
-<ion-alert
-  [backdropDismiss]="false"
-  [isOpen]="showModal"
-  trigger="present-alert"
-  header="删除与ta的聊天记录"
-  [buttons]="alertButtons"
-></ion-alert>
-<ion-modal
-  #modal
-  trigger="open-modal"
-  [isOpen]="isOpen"
-  (didDismiss)="isOpen = false"
-  [initialBreakpoint]="1"
-  [breakpoints]="[0, 1]"
->
+<ion-alert [backdropDismiss]="false" [isOpen]="showModal" trigger="present-alert" header="删除与ta的聊天记录"
+  [buttons]="alertButtons"></ion-alert>
+<ion-modal #modal trigger="open-modal" [isOpen]="isOpen" (didDismiss)="isOpen = false" [initialBreakpoint]="1"
+  [breakpoints]="[0, 1]">
   <ng-template>
     <ion-toolbar>
       <ion-buttons slot="start">
@@ -201,4 +138,4 @@
       <img [src]="codeUrl" alt="" />
     </div>
   </ng-template>
-</ion-modal>
+</ion-modal>

+ 7 - 4
projects/live-app/src/modules/tabs/notice/notice.component.ts

@@ -6,12 +6,14 @@ import { AiChatService } from '../../../services/aichart.service';
 import { SharedModule } from '../../shared.module';
 import { MessageService } from '../../../services/message.service';
 import { ionicStandaloneModules } from '../../ionic-standalone.modules';
+import { DeviceService } from '../../../services/device.service';
+import { CommonModule } from '@angular/common';
 @Component({
   selector: 'app-notice',
   templateUrl: './notice.component.html',
   styleUrls: ['./notice.component.scss'],
   standalone: true,
-  imports: [SharedModule, ...ionicStandaloneModules],
+  imports: [SharedModule, ...ionicStandaloneModules,CommonModule],
 })
 export class NoticeComponent implements OnInit {
   active: string = 'notice';
@@ -44,8 +46,9 @@ export class NoticeComponent implements OnInit {
   constructor(
     private router: Router,
     private aiSer: AiChatService,
-    public msgServe: MessageService
-  ) {}
+    public msgServe: MessageService,
+    public deviceSer: DeviceService
+  ) { }
 
   ngOnInit() {
     this.refresh();
@@ -67,7 +70,7 @@ export class NoticeComponent implements OnInit {
     let r = await query.first();
     this.codeUrl = r?.get('wxCode');
   }
-  async getSysNotice(){
+  async getSysNotice() {
     let result = await this.aiSer.getSysNotice(Parse.User.current()?.id!)
     this.notices = result.data
     console.log(this.notices);

+ 5 - 1
projects/live-app/src/modules/tabs/space/space.component.html

@@ -1,4 +1,8 @@
-<ion-header [translucent]="true" class="header">
+<ion-header [translucent]="true"
+[ngClass]="{
+  'header': true,
+  'pad-top-ios': deviceSer.isIOS
+}">
   <div class="top">
     <!-- <div class="more"></div> -->
     <ion-segment

+ 3 - 1
projects/live-app/src/modules/tabs/space/space.component.ts

@@ -11,6 +11,7 @@ import {
 import { ImagePreviewComponent } from '../../../app/components/image-preview/image-preview.component';
 import * as Parse from 'parse';
 import { InfiniteScrollCustomEvent } from '@ionic/core';
+import { DeviceService } from '../../../services/device.service';
 
 @Component({
   selector: 'app-space',
@@ -33,7 +34,8 @@ export class SpaceComponent implements OnInit {
     private router: Router,
     private aiServ: AiChatService,
     private alertController: AlertController,
-    private toastController: ToastController
+    private toastController: ToastController,
+    public deviceSer: DeviceService
   ) {}
 
   ngOnInit() {

+ 1 - 1
projects/live-app/src/modules/user/setting/setting.component.scss

@@ -36,7 +36,7 @@ ion-content {
     align-items: center;
     width: 100%;
     flex-shrink: 0;
-    padding:0 4vw;
+    // padding:0 4vw;
     // border: 0.2667vw solid #f6f6f6;
     .right {
       display: flex;

+ 19 - 0
projects/live-app/src/services/device.service.ts

@@ -0,0 +1,19 @@
+import { Injectable } from '@angular/core';
+import { Platform } from '@ionic/angular';
+
+@Injectable({
+    providedIn: 'root'
+})
+export class DeviceService {
+    get isIOS(): boolean {
+        if(this.platform.is('hybrid')){
+            return this.platform.is('ios');
+        }else{
+            return false
+        }
+    }
+    constructor(
+        private platform: Platform
+    ) {
+    }
+}

+ 6 - 1
projects/live-app/src/styles.scss

@@ -25,4 +25,9 @@ body{
 @import "@ionic/angular/css/float-elements.css";
 @import "@ionic/angular/css/text-alignment.css";
 @import "@ionic/angular/css/text-transformation.css";
-@import "@ionic/angular/css/flex-utils.css";
+@import "@ionic/angular/css/flex-utils.css";
+
+.pad-top-ios{
+  padding-top: 50px !important;
+  background-color: #f7f7f7;
+}