SlideShare a Scribd company logo
1 of 32
Download to read offline
Creating a Facebook Clone - Part XII
© Codename One 2017 all rights reserved
public class NewsfeedContainer extends InfiniteContainer {
private long lastTime;
@Override
public Component[] fetchComponents(int index, int amount) {
List<Component> components = new ArrayList<>();
if(index == 0) {
lastTime = System.currentTimeMillis();
components.add(createPostBar());
components.add(UIUtils.createSpace());
}
List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount);
if(response == null) {
return null;
}
for(Post p : response) {
components.add(createNewsItem(p.user.get(), p));
components.add(UIUtils.createHalfSpace());
lastTime = p.date.getLong();
}
Component[] cmps = new Component[components.size()];
NewsfeedContainer
public class NewsfeedContainer extends InfiniteContainer {
private long lastTime;
@Override
public Component[] fetchComponents(int index, int amount) {
List<Component> components = new ArrayList<>();
if(index == 0) {
lastTime = System.currentTimeMillis();
components.add(createPostBar());
components.add(UIUtils.createSpace());
}
List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount);
if(response == null) {
return null;
}
for(Post p : response) {
components.add(createNewsItem(p.user.get(), p));
components.add(UIUtils.createHalfSpace());
lastTime = p.date.getLong();
}
Component[] cmps = new Component[components.size()];
NewsfeedContainer
public class NewsfeedContainer extends InfiniteContainer {
private long lastTime;
@Override
public Component[] fetchComponents(int index, int amount) {
List<Component> components = new ArrayList<>();
if(index == 0) {
lastTime = System.currentTimeMillis();
components.add(createPostBar());
components.add(UIUtils.createSpace());
}
List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount);
if(response == null) {
return null;
}
for(Post p : response) {
components.add(createNewsItem(p.user.get(), p));
components.add(UIUtils.createHalfSpace());
lastTime = p.date.getLong();
}
Component[] cmps = new Component[components.size()];
NewsfeedContainer
public class NewsfeedContainer extends InfiniteContainer {
private long lastTime;
@Override
public Component[] fetchComponents(int index, int amount) {
List<Component> components = new ArrayList<>();
if(index == 0) {
lastTime = System.currentTimeMillis();
components.add(createPostBar());
components.add(UIUtils.createSpace());
}
List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount);
if(response == null) {
return null;
}
for(Post p : response) {
components.add(createNewsItem(p.user.get(), p));
components.add(UIUtils.createHalfSpace());
lastTime = p.date.getLong();
}
Component[] cmps = new Component[components.size()];
NewsfeedContainer
public class NewsfeedContainer extends InfiniteContainer {
private long lastTime;
@Override
public Component[] fetchComponents(int index, int amount) {
List<Component> components = new ArrayList<>();
if(index == 0) {
lastTime = System.currentTimeMillis();
components.add(createPostBar());
components.add(UIUtils.createSpace());
}
List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount);
if(response == null) {
return null;
}
for(Post p : response) {
components.add(createNewsItem(p.user.get(), p));
components.add(UIUtils.createHalfSpace());
lastTime = p.date.getLong();
}
Component[] cmps = new Component[components.size()];
NewsfeedContainer
public class NewsfeedContainer extends InfiniteContainer {
private long lastTime;
@Override
public Component[] fetchComponents(int index, int amount) {
List<Component> components = new ArrayList<>();
if(index == 0) {
lastTime = System.currentTimeMillis();
components.add(createPostBar());
components.add(UIUtils.createSpace());
}
List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount);
if(response == null) {
return null;
}
for(Post p : response) {
components.add(createNewsItem(p.user.get(), p));
components.add(UIUtils.createHalfSpace());
lastTime = p.date.getLong();
}
Component[] cmps = new Component[components.size()];
NewsfeedContainer
}
List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount);
if(response == null) {
return null;
}
for(Post p : response) {
components.add(createNewsItem(p.user.get(), p));
components.add(UIUtils.createHalfSpace());
lastTime = p.date.getLong();
}
Component[] cmps = new Component[components.size()];
components.toArray(cmps);
return cmps;
}
private Container createPostBar() {
Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label");
Button writePost = new Button("What's on your mind?",
"NewPostButton");
Button gallery = new Button("Photo", "GalleryButton");
FontImage.setMaterialIcon(gallery,
FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f);
gallery.setTextPosition(BOTTOM);
Container c = BorderLayout.centerEastWest(writePost, gallery, avatar);
NewsfeedContainer
}
List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount);
if(response == null) {
return null;
}
for(Post p : response) {
components.add(createNewsItem(p.user.get(), p));
components.add(UIUtils.createHalfSpace());
lastTime = p.date.getLong();
}
Component[] cmps = new Component[components.size()];
components.toArray(cmps);
return cmps;
}
private Container createPostBar() {
Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label");
Button writePost = new Button("What's on your mind?",
"NewPostButton");
Button gallery = new Button("Photo", "GalleryButton");
FontImage.setMaterialIcon(gallery,
FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f);
gallery.setTextPosition(BOTTOM);
Container c = BorderLayout.centerEastWest(writePost, gallery, avatar);
NewsfeedContainer
}
List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount);
if(response == null) {
return null;
}
for(Post p : response) {
components.add(createNewsItem(p.user.get(), p));
components.add(UIUtils.createHalfSpace());
lastTime = p.date.getLong();
}
Component[] cmps = new Component[components.size()];
components.toArray(cmps);
return cmps;
}
private Container createPostBar() {
Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label");
Button writePost = new Button("What's on your mind?",
"NewPostButton");
Button gallery = new Button("Photo", "GalleryButton");
FontImage.setMaterialIcon(gallery,
FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f);
gallery.setTextPosition(BOTTOM);
Container c = BorderLayout.centerEastWest(writePost, gallery, avatar);
NewsfeedContainer
Component[] cmps = new Component[components.size()];
components.toArray(cmps);
return cmps;
}
private Container createPostBar() {
Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label");
Button writePost = new Button("What's on your mind?",
"NewPostButton");
Button gallery = new Button("Photo", "GalleryButton");
FontImage.setMaterialIcon(gallery,
FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f);
gallery.setTextPosition(BOTTOM);
Container c = BorderLayout.centerEastWest(writePost, gallery, avatar);
c.setUIID("HalfPaddedContainer");
return c;
}
private Container createNewsTitle(User u, Post p) {
Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton");
Button name = new Button(u.fullName(), "PostTitle");
Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()),
"PostSubTitle");
Button menu = new Button("", "Label");
FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ);
Container titleArea = BorderLayout.centerEastWest(
NewsfeedContainer
Component[] cmps = new Component[components.size()];
components.toArray(cmps);
return cmps;
}
private Container createPostBar() {
Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label");
Button writePost = new Button("What's on your mind?",
"NewPostButton");
Button gallery = new Button("Photo", "GalleryButton");
FontImage.setMaterialIcon(gallery,
FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f);
gallery.setTextPosition(BOTTOM);
Container c = BorderLayout.centerEastWest(writePost, gallery, avatar);
c.setUIID("HalfPaddedContainer");
return c;
}
private Container createNewsTitle(User u, Post p) {
Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton");
Button name = new Button(u.fullName(), "PostTitle");
Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()),
"PostSubTitle");
Button menu = new Button("", "Label");
FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ);
Container titleArea = BorderLayout.centerEastWest(
NewsfeedContainer
Component[] cmps = new Component[components.size()];
components.toArray(cmps);
return cmps;
}
private Container createPostBar() {
Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label");
Button writePost = new Button("What's on your mind?",
"NewPostButton");
Button gallery = new Button("Photo", "GalleryButton");
FontImage.setMaterialIcon(gallery,
FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f);
gallery.setTextPosition(BOTTOM);
Container c = BorderLayout.centerEastWest(writePost, gallery, avatar);
c.setUIID("HalfPaddedContainer");
return c;
}
private Container createNewsTitle(User u, Post p) {
Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton");
Button name = new Button(u.fullName(), "PostTitle");
Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()),
"PostSubTitle");
Button menu = new Button("", "Label");
FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ);
Container titleArea = BorderLayout.centerEastWest(
NewsfeedContainer
Container c = BorderLayout.centerEastWest(writePost, gallery, avatar);
c.setUIID("HalfPaddedContainer");
return c;
}
private Container createNewsTitle(User u, Post p) {
Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton");
Button name = new Button(u.fullName(), "PostTitle");
Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()),
"PostSubTitle");
Button menu = new Button("", "Label");
FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ);
Container titleArea = BorderLayout.centerEastWest(
FlowLayout.encloseMiddle(BoxLayout.encloseY(name, postTime)),
FlowLayout.encloseIn(menu), avatar);
titleArea.setUIID("HalfPaddedContainer");
return titleArea;
}
private Container createPostStats(Post p) {
Container stats=new Container(new BorderLayout(), "PaddedContainer");
if(p.likes.size() > 0) {
Label thumbUp = new Label("", "SmallBlueCircle");
FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP);
Label count = new Label("" + p.likes.size(), "SmallLabel");
stats.add(WEST, BoxLayout.encloseX(thumbUp, count));
}
NewsfeedContainer
Container c = BorderLayout.centerEastWest(writePost, gallery, avatar);
c.setUIID("HalfPaddedContainer");
return c;
}
private Container createNewsTitle(User u, Post p) {
Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton");
Button name = new Button(u.fullName(), "PostTitle");
Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()),
"PostSubTitle");
Button menu = new Button("", "Label");
FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ);
Container titleArea = BorderLayout.centerEastWest(
FlowLayout.encloseMiddle(BoxLayout.encloseY(name, postTime)),
FlowLayout.encloseIn(menu), avatar);
titleArea.setUIID("HalfPaddedContainer");
return titleArea;
}
private Container createPostStats(Post p) {
Container stats=new Container(new BorderLayout(), "PaddedContainer");
if(p.likes.size() > 0) {
Label thumbUp = new Label("", "SmallBlueCircle");
FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP);
Label count = new Label("" + p.likes.size(), "SmallLabel");
stats.add(WEST, BoxLayout.encloseX(thumbUp, count));
}
NewsfeedContainer
Container c = BorderLayout.centerEastWest(writePost, gallery, avatar);
c.setUIID("HalfPaddedContainer");
return c;
}
private Container createNewsTitle(User u, Post p) {
Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton");
Button name = new Button(u.fullName(), "PostTitle");
Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()),
"PostSubTitle");
Button menu = new Button("", "Label");
FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ);
Container titleArea = BorderLayout.centerEastWest(
FlowLayout.encloseMiddle(BoxLayout.encloseY(name, postTime)),
FlowLayout.encloseIn(menu), avatar);
titleArea.setUIID("HalfPaddedContainer");
return titleArea;
}
private Container createPostStats(Post p) {
Container stats=new Container(new BorderLayout(), "PaddedContainer");
if(p.likes.size() > 0) {
Label thumbUp = new Label("", "SmallBlueCircle");
FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP);
Label count = new Label("" + p.likes.size(), "SmallLabel");
stats.add(WEST, BoxLayout.encloseX(thumbUp, count));
}
NewsfeedContainer
titleArea.setUIID("HalfPaddedContainer");
return titleArea;
}
private Container createPostStats(Post p) {
Container stats=new Container(new BorderLayout(), "PaddedContainer");
if(p.likes.size() > 0) {
Label thumbUp = new Label("", "SmallBlueCircle");
FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP);
Label count = new Label("" + p.likes.size(), "SmallLabel");
stats.add(WEST, BoxLayout.encloseX(thumbUp, count));
}
if(p.comments.size() > 0) {
stats.add(EAST,new Label(p.comments.size() +
" comments","SmallLabel"));
}
return stats;
}
private Container createNewsItem(User u, Post p) {
Container titleArea = createNewsTitle(u, p);
Component body;
if(p.content.get().indexOf('<') > -1) {
body = new RichTextView(p.content.get());
} else {
body = new SpanLabel(p.content.get());
NewsfeedContainer
titleArea.setUIID("HalfPaddedContainer");
return titleArea;
}
private Container createPostStats(Post p) {
Container stats=new Container(new BorderLayout(), "PaddedContainer");
if(p.likes.size() > 0) {
Label thumbUp = new Label("", "SmallBlueCircle");
FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP);
Label count = new Label("" + p.likes.size(), "SmallLabel");
stats.add(WEST, BoxLayout.encloseX(thumbUp, count));
}
if(p.comments.size() > 0) {
stats.add(EAST,new Label(p.comments.size() +
" comments","SmallLabel"));
}
return stats;
}
private Container createNewsItem(User u, Post p) {
Container titleArea = createNewsTitle(u, p);
Component body;
if(p.content.get().indexOf('<') > -1) {
body = new RichTextView(p.content.get());
} else {
body = new SpanLabel(p.content.get());
NewsfeedContainer
titleArea.setUIID("HalfPaddedContainer");
return titleArea;
}
private Container createPostStats(Post p) {
Container stats=new Container(new BorderLayout(), "PaddedContainer");
if(p.likes.size() > 0) {
Label thumbUp = new Label("", "SmallBlueCircle");
FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP);
Label count = new Label("" + p.likes.size(), "SmallLabel");
stats.add(WEST, BoxLayout.encloseX(thumbUp, count));
}
if(p.comments.size() > 0) {
stats.add(EAST,new Label(p.comments.size() +
" comments","SmallLabel"));
}
return stats;
}
private Container createNewsItem(User u, Post p) {
Container titleArea = createNewsTitle(u, p);
Component body;
if(p.content.get().indexOf('<') > -1) {
body = new RichTextView(p.content.get());
} else {
body = new SpanLabel(p.content.get());
NewsfeedContainer
" comments","SmallLabel"));
}
return stats;
}
private Container createNewsItem(User u, Post p) {
Container titleArea = createNewsTitle(u, p);
Component body;
if(p.content.get().indexOf('<') > -1) {
body = new RichTextView(p.content.get());
} else {
body = new SpanLabel(p.content.get());
}
body.setUIID("HalfPaddedContainer");
Button like = new Button("Like", "CleanButton");
Button comment = new Button("Comment", "CleanButton");
Button share = new Button("Share", "CleanButton");
FontImage.setMaterialIcon(like, FontImage.MATERIAL_THUMB_UP);
FontImage.setMaterialIcon(comment, FontImage.MATERIAL_COMMENT);
FontImage.setMaterialIcon(share, FontImage.MATERIAL_SHARE);
Container buttonBar = GridLayout.encloseIn(3, like, comment, share);
buttonBar.setUIID("HalfPaddedContainer");
return BoxLayout.encloseY(titleArea, body,
createPostStats(p), buttonBar);
}
NewsfeedContainer
" comments","SmallLabel"));
}
return stats;
}
private Container createNewsItem(User u, Post p) {
Container titleArea = createNewsTitle(u, p);
Component body;
if(p.content.get().indexOf('<') > -1) {
body = new RichTextView(p.content.get());
} else {
body = new SpanLabel(p.content.get());
}
body.setUIID("HalfPaddedContainer");
Button like = new Button("Like", "CleanButton");
Button comment = new Button("Comment", "CleanButton");
Button share = new Button("Share", "CleanButton");
FontImage.setMaterialIcon(like, FontImage.MATERIAL_THUMB_UP);
FontImage.setMaterialIcon(comment, FontImage.MATERIAL_COMMENT);
FontImage.setMaterialIcon(share, FontImage.MATERIAL_SHARE);
Container buttonBar = GridLayout.encloseIn(3, like, comment, share);
buttonBar.setUIID("HalfPaddedContainer");
return BoxLayout.encloseY(titleArea, body,
createPostStats(p), buttonBar);
}
NewsfeedContainer
" comments","SmallLabel"));
}
return stats;
}
private Container createNewsItem(User u, Post p) {
Container titleArea = createNewsTitle(u, p);
Component body;
if(p.content.get().indexOf('<') > -1) {
body = new RichTextView(p.content.get());
} else {
body = new SpanLabel(p.content.get());
}
body.setUIID("HalfPaddedContainer");
Button like = new Button("Like", "CleanButton");
Button comment = new Button("Comment", "CleanButton");
Button share = new Button("Share", "CleanButton");
FontImage.setMaterialIcon(like, FontImage.MATERIAL_THUMB_UP);
FontImage.setMaterialIcon(comment, FontImage.MATERIAL_COMMENT);
FontImage.setMaterialIcon(share, FontImage.MATERIAL_SHARE);
Container buttonBar = GridLayout.encloseIn(3, like, comment, share);
buttonBar.setUIID("HalfPaddedContainer");
return BoxLayout.encloseY(titleArea, body,
createPostStats(p), buttonBar);
}
NewsfeedContainer
" comments","SmallLabel"));
}
return stats;
}
private Container createNewsItem(User u, Post p) {
Container titleArea = createNewsTitle(u, p);
Component body;
if(p.content.get().indexOf('<') > -1) {
body = new RichTextView(p.content.get());
} else {
body = new SpanLabel(p.content.get());
}
body.setUIID("HalfPaddedContainer");
Button like = new Button("Like", "CleanButton");
Button comment = new Button("Comment", "CleanButton");
Button share = new Button("Share", "CleanButton");
FontImage.setMaterialIcon(like, FontImage.MATERIAL_THUMB_UP);
FontImage.setMaterialIcon(comment, FontImage.MATERIAL_COMMENT);
FontImage.setMaterialIcon(share, FontImage.MATERIAL_SHARE);
Container buttonBar = GridLayout.encloseIn(3, like, comment, share);
buttonBar.setUIID("HalfPaddedContainer");
return BoxLayout.encloseY(titleArea, body,
createPostStats(p), buttonBar);
}
NewsfeedContainer
© Codename One 2017 all rights reserved
NewPostButton {
border: 1px #cccccc cn1-pill-border;
background-color: white;
padding: 1mm 2mm 1mm 2mm;
margin: 1mm;
color: black;
font-family: "native:MainLight";
font-size: 2.6mm;
}
GalleryButton {
color: #4B4F56;
font-family: "native:MainLight";
font-size: 1.5mm;
text-align: center;
padding: 0px 2mm 0px 2mm;
margin: 0px;
}
HalfPaddedContainer {
padding: 1.5mm;
margin: 0mm;
background: transparent;
theme.css
NewPostButton {
border: 1px #cccccc cn1-pill-border;
background-color: white;
padding: 1mm 2mm 1mm 2mm;
margin: 1mm;
color: black;
font-family: "native:MainLight";
font-size: 2.6mm;
}
GalleryButton {
color: #4B4F56;
font-family: "native:MainLight";
font-size: 1.5mm;
text-align: center;
padding: 0px 2mm 0px 2mm;
margin: 0px;
}
HalfPaddedContainer {
padding: 1.5mm;
margin: 0mm;
background: transparent;
theme.css
color: #4B4F56;
font-family: "native:MainLight";
font-size: 1.5mm;
text-align: center;
padding: 0px 2mm 0px 2mm;
margin: 0px;
}
HalfPaddedContainer {
padding: 1.5mm;
margin: 0mm;
background: transparent;
}
CleanButton {
cn1-derive: BaseButton;
font-family: "native:MainLight";
font-size: 2.5mm;
margin: 0px;
color: #4B4F56;
}
PostTitle {
font-family: "native:MainRegular";
font-size: 3.5mm;
}
PostSubTitle {
theme.css
color: #4B4F56;
font-family: "native:MainLight";
font-size: 1.5mm;
text-align: center;
padding: 0px 2mm 0px 2mm;
margin: 0px;
}
HalfPaddedContainer {
padding: 1.5mm;
margin: 0mm;
background: transparent;
}
CleanButton {
cn1-derive: BaseButton;
font-family: "native:MainLight";
font-size: 2.5mm;
margin: 0px;
color: #4B4F56;
}
PostTitle {
font-family: "native:MainRegular";
font-size: 3.5mm;
}
PostSubTitle {
theme.css
cn1-derive: BaseButton;
font-family: "native:MainLight";
font-size: 2.5mm;
margin: 0px;
color: #4B4F56;
}
PostTitle {
font-family: "native:MainRegular";
font-size: 3.5mm;
}
PostSubTitle {
font-family: "native:MainRegular";
font-size: 2mm;
color: #aaaaaa;
}
SmallBlueCircle {
border: cn1-round-border;
background-color: blue;
padding: 0.5mm;
margin: 0px 2mm 0px 1mm;
color: white;
font-family: "native:MainLight";
font-size: 2mm;
}
theme.css
}
PostTitle {
font-family: "native:MainRegular";
font-size: 3.5mm;
}
PostSubTitle {
font-family: "native:MainRegular";
font-size: 2mm;
color: #aaaaaa;
}
SmallBlueCircle {
border: cn1-round-border;
background-color: blue;
padding: 0.5mm;
margin: 0px 2mm 0px 1mm;
color: white;
font-family: "native:MainLight";
font-size: 2mm;
}
SmallLabel {
font-family: "native:MainLight";
font-size: 2mm;
}
theme.css
}
PostTitle {
font-family: "native:MainRegular";
font-size: 3.5mm;
}
PostSubTitle {
font-family: "native:MainRegular";
font-size: 2mm;
color: #aaaaaa;
}
SmallBlueCircle {
border: cn1-round-border;
background-color: blue;
padding: 0.5mm;
margin: 0px 2mm 0px 1mm;
color: white;
font-family: "native:MainLight";
font-size: 2mm;
}
SmallLabel {
font-family: "native:MainLight";
font-size: 2mm;
}
theme.css

More Related Content

Similar to Creating a Facebook Clone - Part XII.pdf

Creating a Facebook Clone - Part XLII.pdf
Creating a Facebook Clone - Part XLII.pdfCreating a Facebook Clone - Part XLII.pdf
Creating a Facebook Clone - Part XLII.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XLII - Transcript.pdf
Creating a Facebook Clone - Part XLII - Transcript.pdfCreating a Facebook Clone - Part XLII - Transcript.pdf
Creating a Facebook Clone - Part XLII - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XIV - Transcript.pdf
Creating a Facebook Clone - Part XIV - Transcript.pdfCreating a Facebook Clone - Part XIV - Transcript.pdf
Creating a Facebook Clone - Part XIV - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdfCreating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdfShaiAlmog1
 
Creating a Facebook Clone - Part VI - Transcript.pdf
Creating a Facebook Clone - Part VI - Transcript.pdfCreating a Facebook Clone - Part VI - Transcript.pdf
Creating a Facebook Clone - Part VI - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XLI.pdf
Creating a Facebook Clone - Part XLI.pdfCreating a Facebook Clone - Part XLI.pdf
Creating a Facebook Clone - Part XLI.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXVIII - Transcript.pdfCreating a Facebook Clone - Part XXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXVIII - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XXXV - Transcript.pdf
Creating a Facebook Clone - Part XXXV - Transcript.pdfCreating a Facebook Clone - Part XXXV - Transcript.pdf
Creating a Facebook Clone - Part XXXV - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XIV.pdf
Creating a Facebook Clone - Part XIV.pdfCreating a Facebook Clone - Part XIV.pdf
Creating a Facebook Clone - Part XIV.pdfShaiAlmog1
 
Creating an Uber Clone - Part XXXX.pdf
Creating an Uber Clone - Part XXXX.pdfCreating an Uber Clone - Part XXXX.pdf
Creating an Uber Clone - Part XXXX.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XXXIII.pdf
Creating a Facebook Clone - Part XXXIII.pdfCreating a Facebook Clone - Part XXXIII.pdf
Creating a Facebook Clone - Part XXXIII.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XXXV.pdf
Creating a Facebook Clone - Part XXXV.pdfCreating a Facebook Clone - Part XXXV.pdf
Creating a Facebook Clone - Part XXXV.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XVI - Transcript.pdf
Creating a Facebook Clone - Part XVI - Transcript.pdfCreating a Facebook Clone - Part XVI - Transcript.pdf
Creating a Facebook Clone - Part XVI - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part VI.pdf
Creating a Facebook Clone - Part VI.pdfCreating a Facebook Clone - Part VI.pdf
Creating a Facebook Clone - Part VI.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XLVI.pdf
Creating a Facebook Clone - Part XLVI.pdfCreating a Facebook Clone - Part XLVI.pdf
Creating a Facebook Clone - Part XLVI.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfCreating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfCreating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfShaiAlmog1
 
React new features and intro to Hooks
React new features and intro to HooksReact new features and intro to Hooks
React new features and intro to HooksSoluto
 
Creating a Facebook Clone - Part VII.pdf
Creating a Facebook Clone - Part VII.pdfCreating a Facebook Clone - Part VII.pdf
Creating a Facebook Clone - Part VII.pdfShaiAlmog1
 
C# Starter L04-Collections
C# Starter L04-CollectionsC# Starter L04-Collections
C# Starter L04-CollectionsMohammad Shaker
 

Similar to Creating a Facebook Clone - Part XII.pdf (20)

Creating a Facebook Clone - Part XLII.pdf
Creating a Facebook Clone - Part XLII.pdfCreating a Facebook Clone - Part XLII.pdf
Creating a Facebook Clone - Part XLII.pdf
 
Creating a Facebook Clone - Part XLII - Transcript.pdf
Creating a Facebook Clone - Part XLII - Transcript.pdfCreating a Facebook Clone - Part XLII - Transcript.pdf
Creating a Facebook Clone - Part XLII - Transcript.pdf
 
Creating a Facebook Clone - Part XIV - Transcript.pdf
Creating a Facebook Clone - Part XIV - Transcript.pdfCreating a Facebook Clone - Part XIV - Transcript.pdf
Creating a Facebook Clone - Part XIV - Transcript.pdf
 
Creating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdfCreating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdf
 
Creating a Facebook Clone - Part VI - Transcript.pdf
Creating a Facebook Clone - Part VI - Transcript.pdfCreating a Facebook Clone - Part VI - Transcript.pdf
Creating a Facebook Clone - Part VI - Transcript.pdf
 
Creating a Facebook Clone - Part XLI.pdf
Creating a Facebook Clone - Part XLI.pdfCreating a Facebook Clone - Part XLI.pdf
Creating a Facebook Clone - Part XLI.pdf
 
Creating a Facebook Clone - Part XXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXVIII - Transcript.pdfCreating a Facebook Clone - Part XXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXVIII - Transcript.pdf
 
Creating a Facebook Clone - Part XXXV - Transcript.pdf
Creating a Facebook Clone - Part XXXV - Transcript.pdfCreating a Facebook Clone - Part XXXV - Transcript.pdf
Creating a Facebook Clone - Part XXXV - Transcript.pdf
 
Creating a Facebook Clone - Part XIV.pdf
Creating a Facebook Clone - Part XIV.pdfCreating a Facebook Clone - Part XIV.pdf
Creating a Facebook Clone - Part XIV.pdf
 
Creating an Uber Clone - Part XXXX.pdf
Creating an Uber Clone - Part XXXX.pdfCreating an Uber Clone - Part XXXX.pdf
Creating an Uber Clone - Part XXXX.pdf
 
Creating a Facebook Clone - Part XXXIII.pdf
Creating a Facebook Clone - Part XXXIII.pdfCreating a Facebook Clone - Part XXXIII.pdf
Creating a Facebook Clone - Part XXXIII.pdf
 
Creating a Facebook Clone - Part XXXV.pdf
Creating a Facebook Clone - Part XXXV.pdfCreating a Facebook Clone - Part XXXV.pdf
Creating a Facebook Clone - Part XXXV.pdf
 
Creating a Facebook Clone - Part XVI - Transcript.pdf
Creating a Facebook Clone - Part XVI - Transcript.pdfCreating a Facebook Clone - Part XVI - Transcript.pdf
Creating a Facebook Clone - Part XVI - Transcript.pdf
 
Creating a Facebook Clone - Part VI.pdf
Creating a Facebook Clone - Part VI.pdfCreating a Facebook Clone - Part VI.pdf
Creating a Facebook Clone - Part VI.pdf
 
Creating a Facebook Clone - Part XLVI.pdf
Creating a Facebook Clone - Part XLVI.pdfCreating a Facebook Clone - Part XLVI.pdf
Creating a Facebook Clone - Part XLVI.pdf
 
Creating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfCreating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdf
 
Creating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfCreating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdf
 
React new features and intro to Hooks
React new features and intro to HooksReact new features and intro to Hooks
React new features and intro to Hooks
 
Creating a Facebook Clone - Part VII.pdf
Creating a Facebook Clone - Part VII.pdfCreating a Facebook Clone - Part VII.pdf
Creating a Facebook Clone - Part VII.pdf
 
C# Starter L04-Collections
C# Starter L04-CollectionsC# Starter L04-Collections
C# Starter L04-Collections
 

More from ShaiAlmog1

The Duck Teaches Learn to debug from the masters. Local to production- kill ...
The Duck Teaches  Learn to debug from the masters. Local to production- kill ...The Duck Teaches  Learn to debug from the masters. Local to production- kill ...
The Duck Teaches Learn to debug from the masters. Local to production- kill ...ShaiAlmog1
 
create-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfcreate-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfShaiAlmog1
 
create-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfcreate-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfShaiAlmog1
 
create-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfcreate-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfShaiAlmog1
 
create-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfcreate-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfShaiAlmog1
 
create-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfcreate-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfShaiAlmog1
 
create-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfcreate-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfShaiAlmog1
 
create-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfcreate-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfShaiAlmog1
 
create-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfcreate-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfShaiAlmog1
 
create-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfcreate-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfShaiAlmog1
 
create-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfcreate-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfShaiAlmog1
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfShaiAlmog1
 
create-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfcreate-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfCreating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfCreating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfCreating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfCreating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfCreating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part IX.pdf
Creating a Whatsapp Clone - Part IX.pdfCreating a Whatsapp Clone - Part IX.pdf
Creating a Whatsapp Clone - Part IX.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part VI.pdf
Creating a Whatsapp Clone - Part VI.pdfCreating a Whatsapp Clone - Part VI.pdf
Creating a Whatsapp Clone - Part VI.pdfShaiAlmog1
 

More from ShaiAlmog1 (20)

The Duck Teaches Learn to debug from the masters. Local to production- kill ...
The Duck Teaches  Learn to debug from the masters. Local to production- kill ...The Duck Teaches  Learn to debug from the masters. Local to production- kill ...
The Duck Teaches Learn to debug from the masters. Local to production- kill ...
 
create-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfcreate-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdf
 
create-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfcreate-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdf
 
create-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfcreate-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdf
 
create-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfcreate-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdf
 
create-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfcreate-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdf
 
create-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfcreate-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdf
 
create-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfcreate-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdf
 
create-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfcreate-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdf
 
create-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfcreate-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdf
 
create-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfcreate-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdf
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdf
 
create-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfcreate-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdf
 
Creating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfCreating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdf
 
Creating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfCreating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdf
 
Creating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfCreating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdf
 
Creating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfCreating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdf
 
Creating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfCreating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdf
 
Creating a Whatsapp Clone - Part IX.pdf
Creating a Whatsapp Clone - Part IX.pdfCreating a Whatsapp Clone - Part IX.pdf
Creating a Whatsapp Clone - Part IX.pdf
 
Creating a Whatsapp Clone - Part VI.pdf
Creating a Whatsapp Clone - Part VI.pdfCreating a Whatsapp Clone - Part VI.pdf
Creating a Whatsapp Clone - Part VI.pdf
 

Recently uploaded

JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuidePixlogix Infotech
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewDianaGray10
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxMarkSteadman7
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهMohamed Sweelam
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptxFIDO Alliance
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfdanishmna97
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governanceWSO2
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxFIDO Alliance
 

Recently uploaded (20)

JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهله
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 

Creating a Facebook Clone - Part XII.pdf

  • 1. Creating a Facebook Clone - Part XII
  • 2. © Codename One 2017 all rights reserved
  • 3. public class NewsfeedContainer extends InfiniteContainer { private long lastTime; @Override public Component[] fetchComponents(int index, int amount) { List<Component> components = new ArrayList<>(); if(index == 0) { lastTime = System.currentTimeMillis(); components.add(createPostBar()); components.add(UIUtils.createSpace()); } List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount); if(response == null) { return null; } for(Post p : response) { components.add(createNewsItem(p.user.get(), p)); components.add(UIUtils.createHalfSpace()); lastTime = p.date.getLong(); } Component[] cmps = new Component[components.size()]; NewsfeedContainer
  • 4. public class NewsfeedContainer extends InfiniteContainer { private long lastTime; @Override public Component[] fetchComponents(int index, int amount) { List<Component> components = new ArrayList<>(); if(index == 0) { lastTime = System.currentTimeMillis(); components.add(createPostBar()); components.add(UIUtils.createSpace()); } List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount); if(response == null) { return null; } for(Post p : response) { components.add(createNewsItem(p.user.get(), p)); components.add(UIUtils.createHalfSpace()); lastTime = p.date.getLong(); } Component[] cmps = new Component[components.size()]; NewsfeedContainer
  • 5. public class NewsfeedContainer extends InfiniteContainer { private long lastTime; @Override public Component[] fetchComponents(int index, int amount) { List<Component> components = new ArrayList<>(); if(index == 0) { lastTime = System.currentTimeMillis(); components.add(createPostBar()); components.add(UIUtils.createSpace()); } List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount); if(response == null) { return null; } for(Post p : response) { components.add(createNewsItem(p.user.get(), p)); components.add(UIUtils.createHalfSpace()); lastTime = p.date.getLong(); } Component[] cmps = new Component[components.size()]; NewsfeedContainer
  • 6. public class NewsfeedContainer extends InfiniteContainer { private long lastTime; @Override public Component[] fetchComponents(int index, int amount) { List<Component> components = new ArrayList<>(); if(index == 0) { lastTime = System.currentTimeMillis(); components.add(createPostBar()); components.add(UIUtils.createSpace()); } List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount); if(response == null) { return null; } for(Post p : response) { components.add(createNewsItem(p.user.get(), p)); components.add(UIUtils.createHalfSpace()); lastTime = p.date.getLong(); } Component[] cmps = new Component[components.size()]; NewsfeedContainer
  • 7. public class NewsfeedContainer extends InfiniteContainer { private long lastTime; @Override public Component[] fetchComponents(int index, int amount) { List<Component> components = new ArrayList<>(); if(index == 0) { lastTime = System.currentTimeMillis(); components.add(createPostBar()); components.add(UIUtils.createSpace()); } List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount); if(response == null) { return null; } for(Post p : response) { components.add(createNewsItem(p.user.get(), p)); components.add(UIUtils.createHalfSpace()); lastTime = p.date.getLong(); } Component[] cmps = new Component[components.size()]; NewsfeedContainer
  • 8. public class NewsfeedContainer extends InfiniteContainer { private long lastTime; @Override public Component[] fetchComponents(int index, int amount) { List<Component> components = new ArrayList<>(); if(index == 0) { lastTime = System.currentTimeMillis(); components.add(createPostBar()); components.add(UIUtils.createSpace()); } List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount); if(response == null) { return null; } for(Post p : response) { components.add(createNewsItem(p.user.get(), p)); components.add(UIUtils.createHalfSpace()); lastTime = p.date.getLong(); } Component[] cmps = new Component[components.size()]; NewsfeedContainer
  • 9. } List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount); if(response == null) { return null; } for(Post p : response) { components.add(createNewsItem(p.user.get(), p)); components.add(UIUtils.createHalfSpace()); lastTime = p.date.getLong(); } Component[] cmps = new Component[components.size()]; components.toArray(cmps); return cmps; } private Container createPostBar() { Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label"); Button writePost = new Button("What's on your mind?", "NewPostButton"); Button gallery = new Button("Photo", "GalleryButton"); FontImage.setMaterialIcon(gallery, FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f); gallery.setTextPosition(BOTTOM); Container c = BorderLayout.centerEastWest(writePost, gallery, avatar); NewsfeedContainer
  • 10. } List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount); if(response == null) { return null; } for(Post p : response) { components.add(createNewsItem(p.user.get(), p)); components.add(UIUtils.createHalfSpace()); lastTime = p.date.getLong(); } Component[] cmps = new Component[components.size()]; components.toArray(cmps); return cmps; } private Container createPostBar() { Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label"); Button writePost = new Button("What's on your mind?", "NewPostButton"); Button gallery = new Button("Photo", "GalleryButton"); FontImage.setMaterialIcon(gallery, FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f); gallery.setTextPosition(BOTTOM); Container c = BorderLayout.centerEastWest(writePost, gallery, avatar); NewsfeedContainer
  • 11. } List<Post> response = ServerAPI.fetchTimelinePosts(lastTime, amount); if(response == null) { return null; } for(Post p : response) { components.add(createNewsItem(p.user.get(), p)); components.add(UIUtils.createHalfSpace()); lastTime = p.date.getLong(); } Component[] cmps = new Component[components.size()]; components.toArray(cmps); return cmps; } private Container createPostBar() { Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label"); Button writePost = new Button("What's on your mind?", "NewPostButton"); Button gallery = new Button("Photo", "GalleryButton"); FontImage.setMaterialIcon(gallery, FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f); gallery.setTextPosition(BOTTOM); Container c = BorderLayout.centerEastWest(writePost, gallery, avatar); NewsfeedContainer
  • 12. Component[] cmps = new Component[components.size()]; components.toArray(cmps); return cmps; } private Container createPostBar() { Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label"); Button writePost = new Button("What's on your mind?", "NewPostButton"); Button gallery = new Button("Photo", "GalleryButton"); FontImage.setMaterialIcon(gallery, FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f); gallery.setTextPosition(BOTTOM); Container c = BorderLayout.centerEastWest(writePost, gallery, avatar); c.setUIID("HalfPaddedContainer"); return c; } private Container createNewsTitle(User u, Post p) { Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton"); Button name = new Button(u.fullName(), "PostTitle"); Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()), "PostSubTitle"); Button menu = new Button("", "Label"); FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ); Container titleArea = BorderLayout.centerEastWest( NewsfeedContainer
  • 13. Component[] cmps = new Component[components.size()]; components.toArray(cmps); return cmps; } private Container createPostBar() { Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label"); Button writePost = new Button("What's on your mind?", "NewPostButton"); Button gallery = new Button("Photo", "GalleryButton"); FontImage.setMaterialIcon(gallery, FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f); gallery.setTextPosition(BOTTOM); Container c = BorderLayout.centerEastWest(writePost, gallery, avatar); c.setUIID("HalfPaddedContainer"); return c; } private Container createNewsTitle(User u, Post p) { Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton"); Button name = new Button(u.fullName(), "PostTitle"); Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()), "PostSubTitle"); Button menu = new Button("", "Label"); FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ); Container titleArea = BorderLayout.centerEastWest( NewsfeedContainer
  • 14. Component[] cmps = new Component[components.size()]; components.toArray(cmps); return cmps; } private Container createPostBar() { Button avatar = new Button(ServerAPI.me().getAvatar(6.5f), "Label"); Button writePost = new Button("What's on your mind?", "NewPostButton"); Button gallery = new Button("Photo", "GalleryButton"); FontImage.setMaterialIcon(gallery, FontImage.MATERIAL_PHOTO_LIBRARY, 2.9f); gallery.setTextPosition(BOTTOM); Container c = BorderLayout.centerEastWest(writePost, gallery, avatar); c.setUIID("HalfPaddedContainer"); return c; } private Container createNewsTitle(User u, Post p) { Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton"); Button name = new Button(u.fullName(), "PostTitle"); Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()), "PostSubTitle"); Button menu = new Button("", "Label"); FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ); Container titleArea = BorderLayout.centerEastWest( NewsfeedContainer
  • 15. Container c = BorderLayout.centerEastWest(writePost, gallery, avatar); c.setUIID("HalfPaddedContainer"); return c; } private Container createNewsTitle(User u, Post p) { Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton"); Button name = new Button(u.fullName(), "PostTitle"); Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()), "PostSubTitle"); Button menu = new Button("", "Label"); FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ); Container titleArea = BorderLayout.centerEastWest( FlowLayout.encloseMiddle(BoxLayout.encloseY(name, postTime)), FlowLayout.encloseIn(menu), avatar); titleArea.setUIID("HalfPaddedContainer"); return titleArea; } private Container createPostStats(Post p) { Container stats=new Container(new BorderLayout(), "PaddedContainer"); if(p.likes.size() > 0) { Label thumbUp = new Label("", "SmallBlueCircle"); FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP); Label count = new Label("" + p.likes.size(), "SmallLabel"); stats.add(WEST, BoxLayout.encloseX(thumbUp, count)); } NewsfeedContainer
  • 16. Container c = BorderLayout.centerEastWest(writePost, gallery, avatar); c.setUIID("HalfPaddedContainer"); return c; } private Container createNewsTitle(User u, Post p) { Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton"); Button name = new Button(u.fullName(), "PostTitle"); Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()), "PostSubTitle"); Button menu = new Button("", "Label"); FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ); Container titleArea = BorderLayout.centerEastWest( FlowLayout.encloseMiddle(BoxLayout.encloseY(name, postTime)), FlowLayout.encloseIn(menu), avatar); titleArea.setUIID("HalfPaddedContainer"); return titleArea; } private Container createPostStats(Post p) { Container stats=new Container(new BorderLayout(), "PaddedContainer"); if(p.likes.size() > 0) { Label thumbUp = new Label("", "SmallBlueCircle"); FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP); Label count = new Label("" + p.likes.size(), "SmallLabel"); stats.add(WEST, BoxLayout.encloseX(thumbUp, count)); } NewsfeedContainer
  • 17. Container c = BorderLayout.centerEastWest(writePost, gallery, avatar); c.setUIID("HalfPaddedContainer"); return c; } private Container createNewsTitle(User u, Post p) { Button avatar = new Button("", u.getAvatar(6.5f), "CleanButton"); Button name = new Button(u.fullName(), "PostTitle"); Button postTime = new Button(UIUtils.formatTimeAgo(p.date.get()), "PostSubTitle"); Button menu = new Button("", "Label"); FontImage.setMaterialIcon(menu, FontImage.MATERIAL_MORE_HORIZ); Container titleArea = BorderLayout.centerEastWest( FlowLayout.encloseMiddle(BoxLayout.encloseY(name, postTime)), FlowLayout.encloseIn(menu), avatar); titleArea.setUIID("HalfPaddedContainer"); return titleArea; } private Container createPostStats(Post p) { Container stats=new Container(new BorderLayout(), "PaddedContainer"); if(p.likes.size() > 0) { Label thumbUp = new Label("", "SmallBlueCircle"); FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP); Label count = new Label("" + p.likes.size(), "SmallLabel"); stats.add(WEST, BoxLayout.encloseX(thumbUp, count)); } NewsfeedContainer
  • 18. titleArea.setUIID("HalfPaddedContainer"); return titleArea; } private Container createPostStats(Post p) { Container stats=new Container(new BorderLayout(), "PaddedContainer"); if(p.likes.size() > 0) { Label thumbUp = new Label("", "SmallBlueCircle"); FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP); Label count = new Label("" + p.likes.size(), "SmallLabel"); stats.add(WEST, BoxLayout.encloseX(thumbUp, count)); } if(p.comments.size() > 0) { stats.add(EAST,new Label(p.comments.size() + " comments","SmallLabel")); } return stats; } private Container createNewsItem(User u, Post p) { Container titleArea = createNewsTitle(u, p); Component body; if(p.content.get().indexOf('<') > -1) { body = new RichTextView(p.content.get()); } else { body = new SpanLabel(p.content.get()); NewsfeedContainer
  • 19. titleArea.setUIID("HalfPaddedContainer"); return titleArea; } private Container createPostStats(Post p) { Container stats=new Container(new BorderLayout(), "PaddedContainer"); if(p.likes.size() > 0) { Label thumbUp = new Label("", "SmallBlueCircle"); FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP); Label count = new Label("" + p.likes.size(), "SmallLabel"); stats.add(WEST, BoxLayout.encloseX(thumbUp, count)); } if(p.comments.size() > 0) { stats.add(EAST,new Label(p.comments.size() + " comments","SmallLabel")); } return stats; } private Container createNewsItem(User u, Post p) { Container titleArea = createNewsTitle(u, p); Component body; if(p.content.get().indexOf('<') > -1) { body = new RichTextView(p.content.get()); } else { body = new SpanLabel(p.content.get()); NewsfeedContainer
  • 20. titleArea.setUIID("HalfPaddedContainer"); return titleArea; } private Container createPostStats(Post p) { Container stats=new Container(new BorderLayout(), "PaddedContainer"); if(p.likes.size() > 0) { Label thumbUp = new Label("", "SmallBlueCircle"); FontImage.setMaterialIcon(thumbUp, FontImage.MATERIAL_THUMB_UP); Label count = new Label("" + p.likes.size(), "SmallLabel"); stats.add(WEST, BoxLayout.encloseX(thumbUp, count)); } if(p.comments.size() > 0) { stats.add(EAST,new Label(p.comments.size() + " comments","SmallLabel")); } return stats; } private Container createNewsItem(User u, Post p) { Container titleArea = createNewsTitle(u, p); Component body; if(p.content.get().indexOf('<') > -1) { body = new RichTextView(p.content.get()); } else { body = new SpanLabel(p.content.get()); NewsfeedContainer
  • 21. " comments","SmallLabel")); } return stats; } private Container createNewsItem(User u, Post p) { Container titleArea = createNewsTitle(u, p); Component body; if(p.content.get().indexOf('<') > -1) { body = new RichTextView(p.content.get()); } else { body = new SpanLabel(p.content.get()); } body.setUIID("HalfPaddedContainer"); Button like = new Button("Like", "CleanButton"); Button comment = new Button("Comment", "CleanButton"); Button share = new Button("Share", "CleanButton"); FontImage.setMaterialIcon(like, FontImage.MATERIAL_THUMB_UP); FontImage.setMaterialIcon(comment, FontImage.MATERIAL_COMMENT); FontImage.setMaterialIcon(share, FontImage.MATERIAL_SHARE); Container buttonBar = GridLayout.encloseIn(3, like, comment, share); buttonBar.setUIID("HalfPaddedContainer"); return BoxLayout.encloseY(titleArea, body, createPostStats(p), buttonBar); } NewsfeedContainer
  • 22. " comments","SmallLabel")); } return stats; } private Container createNewsItem(User u, Post p) { Container titleArea = createNewsTitle(u, p); Component body; if(p.content.get().indexOf('<') > -1) { body = new RichTextView(p.content.get()); } else { body = new SpanLabel(p.content.get()); } body.setUIID("HalfPaddedContainer"); Button like = new Button("Like", "CleanButton"); Button comment = new Button("Comment", "CleanButton"); Button share = new Button("Share", "CleanButton"); FontImage.setMaterialIcon(like, FontImage.MATERIAL_THUMB_UP); FontImage.setMaterialIcon(comment, FontImage.MATERIAL_COMMENT); FontImage.setMaterialIcon(share, FontImage.MATERIAL_SHARE); Container buttonBar = GridLayout.encloseIn(3, like, comment, share); buttonBar.setUIID("HalfPaddedContainer"); return BoxLayout.encloseY(titleArea, body, createPostStats(p), buttonBar); } NewsfeedContainer
  • 23. " comments","SmallLabel")); } return stats; } private Container createNewsItem(User u, Post p) { Container titleArea = createNewsTitle(u, p); Component body; if(p.content.get().indexOf('<') > -1) { body = new RichTextView(p.content.get()); } else { body = new SpanLabel(p.content.get()); } body.setUIID("HalfPaddedContainer"); Button like = new Button("Like", "CleanButton"); Button comment = new Button("Comment", "CleanButton"); Button share = new Button("Share", "CleanButton"); FontImage.setMaterialIcon(like, FontImage.MATERIAL_THUMB_UP); FontImage.setMaterialIcon(comment, FontImage.MATERIAL_COMMENT); FontImage.setMaterialIcon(share, FontImage.MATERIAL_SHARE); Container buttonBar = GridLayout.encloseIn(3, like, comment, share); buttonBar.setUIID("HalfPaddedContainer"); return BoxLayout.encloseY(titleArea, body, createPostStats(p), buttonBar); } NewsfeedContainer
  • 24. " comments","SmallLabel")); } return stats; } private Container createNewsItem(User u, Post p) { Container titleArea = createNewsTitle(u, p); Component body; if(p.content.get().indexOf('<') > -1) { body = new RichTextView(p.content.get()); } else { body = new SpanLabel(p.content.get()); } body.setUIID("HalfPaddedContainer"); Button like = new Button("Like", "CleanButton"); Button comment = new Button("Comment", "CleanButton"); Button share = new Button("Share", "CleanButton"); FontImage.setMaterialIcon(like, FontImage.MATERIAL_THUMB_UP); FontImage.setMaterialIcon(comment, FontImage.MATERIAL_COMMENT); FontImage.setMaterialIcon(share, FontImage.MATERIAL_SHARE); Container buttonBar = GridLayout.encloseIn(3, like, comment, share); buttonBar.setUIID("HalfPaddedContainer"); return BoxLayout.encloseY(titleArea, body, createPostStats(p), buttonBar); } NewsfeedContainer
  • 25. © Codename One 2017 all rights reserved
  • 26. NewPostButton { border: 1px #cccccc cn1-pill-border; background-color: white; padding: 1mm 2mm 1mm 2mm; margin: 1mm; color: black; font-family: "native:MainLight"; font-size: 2.6mm; } GalleryButton { color: #4B4F56; font-family: "native:MainLight"; font-size: 1.5mm; text-align: center; padding: 0px 2mm 0px 2mm; margin: 0px; } HalfPaddedContainer { padding: 1.5mm; margin: 0mm; background: transparent; theme.css
  • 27. NewPostButton { border: 1px #cccccc cn1-pill-border; background-color: white; padding: 1mm 2mm 1mm 2mm; margin: 1mm; color: black; font-family: "native:MainLight"; font-size: 2.6mm; } GalleryButton { color: #4B4F56; font-family: "native:MainLight"; font-size: 1.5mm; text-align: center; padding: 0px 2mm 0px 2mm; margin: 0px; } HalfPaddedContainer { padding: 1.5mm; margin: 0mm; background: transparent; theme.css
  • 28. color: #4B4F56; font-family: "native:MainLight"; font-size: 1.5mm; text-align: center; padding: 0px 2mm 0px 2mm; margin: 0px; } HalfPaddedContainer { padding: 1.5mm; margin: 0mm; background: transparent; } CleanButton { cn1-derive: BaseButton; font-family: "native:MainLight"; font-size: 2.5mm; margin: 0px; color: #4B4F56; } PostTitle { font-family: "native:MainRegular"; font-size: 3.5mm; } PostSubTitle { theme.css
  • 29. color: #4B4F56; font-family: "native:MainLight"; font-size: 1.5mm; text-align: center; padding: 0px 2mm 0px 2mm; margin: 0px; } HalfPaddedContainer { padding: 1.5mm; margin: 0mm; background: transparent; } CleanButton { cn1-derive: BaseButton; font-family: "native:MainLight"; font-size: 2.5mm; margin: 0px; color: #4B4F56; } PostTitle { font-family: "native:MainRegular"; font-size: 3.5mm; } PostSubTitle { theme.css
  • 30. cn1-derive: BaseButton; font-family: "native:MainLight"; font-size: 2.5mm; margin: 0px; color: #4B4F56; } PostTitle { font-family: "native:MainRegular"; font-size: 3.5mm; } PostSubTitle { font-family: "native:MainRegular"; font-size: 2mm; color: #aaaaaa; } SmallBlueCircle { border: cn1-round-border; background-color: blue; padding: 0.5mm; margin: 0px 2mm 0px 1mm; color: white; font-family: "native:MainLight"; font-size: 2mm; } theme.css
  • 31. } PostTitle { font-family: "native:MainRegular"; font-size: 3.5mm; } PostSubTitle { font-family: "native:MainRegular"; font-size: 2mm; color: #aaaaaa; } SmallBlueCircle { border: cn1-round-border; background-color: blue; padding: 0.5mm; margin: 0px 2mm 0px 1mm; color: white; font-family: "native:MainLight"; font-size: 2mm; } SmallLabel { font-family: "native:MainLight"; font-size: 2mm; } theme.css
  • 32. } PostTitle { font-family: "native:MainRegular"; font-size: 3.5mm; } PostSubTitle { font-family: "native:MainRegular"; font-size: 2mm; color: #aaaaaa; } SmallBlueCircle { border: cn1-round-border; background-color: blue; padding: 0.5mm; margin: 0px 2mm 0px 1mm; color: white; font-family: "native:MainLight"; font-size: 2mm; } SmallLabel { font-family: "native:MainLight"; font-size: 2mm; } theme.css