Contacts
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
"@angular/router": "^14.0.0",
|
||||
"@capacitor-community/apple-sign-in": "^5.0.0",
|
||||
"@capacitor-community/barcode-scanner": "^4.0.1",
|
||||
"@capacitor-community/contacts": "^5.0.4",
|
||||
"@capacitor-community/facebook-login": "^5.0.3",
|
||||
"@capacitor/android": "5.0.5",
|
||||
"@capacitor/app": "^5.0.0",
|
||||
|
||||
@@ -10,55 +10,118 @@
|
||||
</ion-header>
|
||||
|
||||
<ion-content class="ion-padding">
|
||||
<div class="inv-head">Invite Firends</div>
|
||||
|
||||
<ion-accordion-group>
|
||||
<ion-accordion value="first">
|
||||
<ion-item class="arcord_head" slot="header" color="secondary" style="margin-bottom: 1px;">
|
||||
<ion-label>Invite with Email</ion-label>
|
||||
</ion-item>
|
||||
<div class="ion-padding" slot="content" style="background-color: white; padding: 5px">
|
||||
<div style="margin-top: 10px; background-color: aliceblue; border-radius: 10px; padding: 5px">
|
||||
<ion-item lines="none">
|
||||
<ion-icon slot="start" name="mail-outline"></ion-icon>
|
||||
<ion-input type="email" placeholder="Email" maxlength="55" [(ngModel)]='email'></ion-input>
|
||||
</ion-item>
|
||||
|
||||
<ion-item lines="none">
|
||||
<ion-icon slot="start" name="text-outline"></ion-icon>
|
||||
<ion-input type="text" placeholder="Firstname" maxlength="15" [(ngModel)]='ref_firstname'></ion-input>
|
||||
</ion-item>
|
||||
|
||||
<ion-item lines="none">
|
||||
<ion-icon slot="start" name="text-outline"></ion-icon>
|
||||
<ion-input type="text" placeholder="Lastname" maxlength="15" [(ngModel)]='lastname'></ion-input>
|
||||
</ion-item>
|
||||
|
||||
<div lines="none" style="text-align: right">
|
||||
<ion-button
|
||||
style="padding: 3px; height: 45px"
|
||||
shape="round"
|
||||
expand="block"
|
||||
(click)="sendRefer()">
|
||||
Send Invite
|
||||
</ion-button>
|
||||
</div>
|
||||
|
||||
<!-- <ion-grid>-->
|
||||
<!-- <ion-row>-->
|
||||
<!-- <ion-col>-->
|
||||
<!-- </ion-col>-->
|
||||
<!-- <ion-col>-->
|
||||
<!-- <ion-button expand="block" (click)="sendRefer()">-->
|
||||
<!-- Send-->
|
||||
<!-- </ion-button>-->
|
||||
<!-- </ion-col>-->
|
||||
<!-- </ion-row>-->
|
||||
<!-- </ion-grid>-->
|
||||
</div>
|
||||
</div>
|
||||
</ion-accordion>
|
||||
<ion-accordion value="second">
|
||||
<ion-item class="arcord_head" slot="header" color="secondary" style="margin-bottom: 1px;">
|
||||
<ion-label>Invite from Contacts</ion-label>
|
||||
</ion-item>
|
||||
<div class="ion-padding" slot="content" style="background-color: white; padding: 5px">
|
||||
<div style="margin-top: 10px; background-color: aliceblue; min-height: 150px;">
|
||||
<ion-button (click)="refreshContacts()">Refresh Contacts</ion-button>
|
||||
</div>
|
||||
|
||||
|
||||
<ion-segment [(ngModel)]="tabs">
|
||||
<ion-segment-button value="refer">
|
||||
<ion-label>Refer</ion-label>
|
||||
</ion-segment-button>
|
||||
<ion-segment-button value="history">
|
||||
<ion-label>History</ion-label>
|
||||
</ion-segment-button>
|
||||
</ion-segment>
|
||||
</div>
|
||||
</ion-accordion>
|
||||
</ion-accordion-group>
|
||||
|
||||
<div *ngIf="tabs =='refer'" class="refer">
|
||||
<ion-card>
|
||||
<ion-card-header>
|
||||
<ion-card-title>Invite Friends</ion-card-title>
|
||||
<ion-card-subtitle>Enter email and name.</ion-card-subtitle>
|
||||
</ion-card-header>
|
||||
|
||||
<ion-card-content>
|
||||
<ion-item lines="none">
|
||||
<ion-icon slot="start" name="mail-outline"></ion-icon>
|
||||
<ion-input type="email" placeholder="Email" maxlength="55" [(ngModel)]='email'></ion-input>
|
||||
</ion-item>
|
||||
<!-- <ion-segment [(ngModel)]="tabs">-->
|
||||
<!-- <ion-segment-button value="refer">-->
|
||||
<!-- <ion-label>Refer</ion-label>-->
|
||||
<!-- </ion-segment-button>-->
|
||||
<!-- <ion-segment-button value="history">-->
|
||||
<!-- <ion-label>History</ion-label>-->
|
||||
<!-- </ion-segment-button>-->
|
||||
<!-- </ion-segment>-->
|
||||
|
||||
<ion-item lines="none">
|
||||
<ion-icon slot="start" name="text-outline"></ion-icon>
|
||||
<ion-input type="text" placeholder="Firstname" maxlength="15" [(ngModel)]='ref_firstname'></ion-input>
|
||||
</ion-item>
|
||||
<!-- <div *ngIf="tabs =='refer'" class="refer">-->
|
||||
<!-- <ion-card>-->
|
||||
<!-- <ion-card-header>-->
|
||||
<!-- <ion-card-title>Invite Friends</ion-card-title>-->
|
||||
<!-- <ion-card-subtitle>Enter email and name.</ion-card-subtitle>-->
|
||||
<!-- </ion-card-header>-->
|
||||
|
||||
<ion-item lines="none">
|
||||
<ion-icon slot="start" name="text-outline"></ion-icon>
|
||||
<ion-input type="text" placeholder="Lastname" maxlength="15" [(ngModel)]='lastname'></ion-input>
|
||||
</ion-item>
|
||||
<!-- <ion-card-content>-->
|
||||
<!-- <ion-item lines="none">-->
|
||||
<!-- <ion-icon slot="start" name="mail-outline"></ion-icon>-->
|
||||
<!-- <ion-input type="email" placeholder="Email" maxlength="55" [(ngModel)]='email'></ion-input>-->
|
||||
<!-- </ion-item>-->
|
||||
|
||||
<ion-grid>
|
||||
<ion-row>
|
||||
<ion-col>
|
||||
</ion-col>
|
||||
<ion-col>
|
||||
<ion-button expand="block" (click)="sendRefer()">
|
||||
Send
|
||||
</ion-button>
|
||||
</ion-col>
|
||||
</ion-row>
|
||||
</ion-grid>
|
||||
</ion-card-content>
|
||||
</ion-card>
|
||||
</div>
|
||||
<div *ngIf="tabs =='history'" class="history">
|
||||
<!-- <ion-item lines="none">-->
|
||||
<!-- <ion-icon slot="start" name="text-outline"></ion-icon>-->
|
||||
<!-- <ion-input type="text" placeholder="Firstname" maxlength="15" [(ngModel)]='ref_firstname'></ion-input>-->
|
||||
<!-- </ion-item>-->
|
||||
|
||||
<!-- <ion-item lines="none">-->
|
||||
<!-- <ion-icon slot="start" name="text-outline"></ion-icon>-->
|
||||
<!-- <ion-input type="text" placeholder="Lastname" maxlength="15" [(ngModel)]='lastname'></ion-input>-->
|
||||
<!-- </ion-item>-->
|
||||
|
||||
<!-- <ion-grid>-->
|
||||
<!-- <ion-row>-->
|
||||
<!-- <ion-col>-->
|
||||
<!-- </ion-col>-->
|
||||
<!-- <ion-col>-->
|
||||
<!-- <ion-button expand="block" (click)="sendRefer()">-->
|
||||
<!-- Send-->
|
||||
<!-- </ion-button>-->
|
||||
<!-- </ion-col>-->
|
||||
<!-- </ion-row>-->
|
||||
<!-- </ion-grid>-->
|
||||
<!-- </ion-card-content>-->
|
||||
<!-- </ion-card>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div *ngIf="tabs =='history'" class="history">-->
|
||||
<div class="inv-head">Recent Invitations</div>
|
||||
<div class="history" style="background-color: aliceblue; padding: 5px;">
|
||||
<div class="chat" *ngFor="let item of referData">
|
||||
<div class="flex">
|
||||
<div class="bg_image back_image" [style.backgroundImage]="'url(https://www.wrenchboard.com/assets/images/apps/invite-friend.svg)'"></div>
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
.inv-head{
|
||||
font-weight: bolder;
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
ion-item {
|
||||
--background: #f7f7f7;
|
||||
border-radius: 10px;
|
||||
|
||||
@@ -5,6 +5,7 @@ import { WrenchService } from 'src/app/services/wrench.service';
|
||||
import {SessionDataProviderService} from "../../store/session-data-provider.service";
|
||||
import {last} from "rxjs/operators";
|
||||
import { AlertController } from '@ionic/angular';
|
||||
import {ContactsDataService} from "../../store/contacts-data.service";
|
||||
|
||||
@Component({
|
||||
selector: 'app-invite',
|
||||
@@ -23,7 +24,8 @@ export class InvitePage implements OnInit {
|
||||
private router: Router,
|
||||
public sessionDataProviderService: SessionDataProviderService,
|
||||
private wrenchService: WrenchService,
|
||||
private alertController: AlertController
|
||||
private alertController: AlertController,
|
||||
private contactsDataService:ContactsDataService
|
||||
) {
|
||||
}
|
||||
/*
|
||||
@@ -128,4 +130,7 @@ export class InvitePage implements OnInit {
|
||||
// alert.present();
|
||||
// // alert(amessage);
|
||||
}
|
||||
refreshContacts(){
|
||||
this.contactsDataService.refeshContacts();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<ion-label class="bg_text">{{jobData.offer_code}}</ion-label>
|
||||
<!-- <ion-label class="bg_text">{{jobData.offer_code}}</ion-label>-->
|
||||
<div class="rate">
|
||||
<!-- <ion-icon name="star-half-outline" color="warning"></ion-icon>-->
|
||||
<ion-label class="review"> ({{jobData.interest_count}} interest)</ion-label>
|
||||
@@ -62,6 +62,32 @@
|
||||
</ion-segment-button>
|
||||
</ion-segment>
|
||||
|
||||
<ion-card *ngIf="interestStatus==false;">
|
||||
<ion-card-header>
|
||||
<ion-card-subtitle>Interested in the task?</ion-card-subtitle>
|
||||
</ion-card-header>
|
||||
|
||||
<ion-card-content>
|
||||
<ion-button color="secondary" expand="block" (click)="sendJobInterestMessage()">Send Interest Request to Owner</ion-button>
|
||||
<ion-label class="description">{{interest_status}}
|
||||
</ion-label>
|
||||
</ion-card-content>
|
||||
</ion-card>
|
||||
|
||||
<ion-card *ngIf="interestStatus==true;">
|
||||
<img alt="Silhouette of mountains" src="https://www.wrenchboard.com/assets/images/apps/waiting-task.jpg" />
|
||||
<ion-card-header>
|
||||
<ion-card-title>Waiting for feedback</ion-card-title>
|
||||
<ion-card-subtitle>Sent: {{interestDate |date}}</ion-card-subtitle>
|
||||
</ion-card-header>
|
||||
|
||||
<ion-card-content>
|
||||
You have already sent a notice of interest. If the owner accepts, you will receive a notification to start.
|
||||
</ion-card-content>
|
||||
</ion-card>
|
||||
|
||||
|
||||
|
||||
<div *ngIf="tabs =='about'" class="about">
|
||||
<div style="padding: 13px; width: 100%;">
|
||||
<ion-label class="head_text">{{jobData.offer_code}}</ion-label>
|
||||
|
||||
@@ -87,6 +87,9 @@ ionic generate component market-messages
|
||||
ionic generate service help-data
|
||||
ionic generate component job-details
|
||||
|
||||
ionic generate service contacts-data
|
||||
|
||||
|
||||
https://masteringionic.com/blog/working-with-capacitor-googlemaps-in-ionic
|
||||
ionic generate interface interfaces/location
|
||||
ionic generate interface interfaces/marker
|
||||
@@ -112,6 +115,8 @@ ionic generate service familysuggest-pending
|
||||
|
||||
|
||||
npm i @capacitor/camera @capacitor/filesystem
|
||||
npm i @capacitor-community/contacts
|
||||
|
||||
|
||||
https://devdactic.com/ionic-image-upload-capacitor
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ContactsDataService } from './contacts-data.service';
|
||||
|
||||
describe('ContactsDataService', () => {
|
||||
let service: ContactsDataService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(ContactsDataService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,32 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import {Contacts } from "@capacitor-community/contacts";
|
||||
import { Plugin} from "@capacitor/core";
|
||||
//const { Contacts } = Plugins;
|
||||
|
||||
import { isPlatform } from "@ionic/angular";
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class ContactsDataService {
|
||||
|
||||
constructor() { }
|
||||
|
||||
|
||||
async refeshContacts(){
|
||||
|
||||
if (isPlatform('android') || isPlatform('iphone') || isPlatform('ios')){
|
||||
//return;
|
||||
}
|
||||
else{
|
||||
return;
|
||||
}
|
||||
Contacts.getContacts({projection: {
|
||||
name: true,
|
||||
phones: true,
|
||||
image: true
|
||||
}}).then( result=>{
|
||||
console.log(result);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user