Skip to content

Instantly share code, notes, and snippets.

View tpakis's full-sized avatar

Thanos Tsakiridis tpakis

View GitHub Profile
@tpakis
tpakis / instarss.php
Created August 19, 2016 22:10 — forked from jonathanbell/Instarss.md
Make a RSS feed from an Instagram user's username
<?php
if (!isset($_GET['user'])) {
if (!isset($_GET['hashtag'])) {
exit('Not a valid RSS feed. You didn\'nt provide an Instagram user or hashtag. Send one via a GET variable. Example .../instarss.php?user=snoopdogg');
}
}
if (isset($_GET['user']) && isset($_GET['hashtag'])) {
exit('Don\'t request both user and hashtag. Request one or the other.');
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- google's material design colours from
http://www.google.com/design/spec/style/color.html#color-ui-color-palette -->
<!--reds-->
<color name="md_red_50">#FFEBEE</color>
<color name="md_red_100">#FFCDD2</color>
<color name="md_red_200">#EF9A9A</color>
@tpakis
tpakis / MainActivity.java
Created February 3, 2017 23:38 — forked from udacityandroid/MainActivity.java
Android for Beginners : Cookies Solution Code
package com.example.android.cookies;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@tpakis
tpakis / MainActivity.java
Created February 3, 2017 23:41 — forked from udacityandroid/MainActivity.java
Android for Beginners : Menu Solution Code
package com.example.android.menu;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
/*
* Copyright (C) 2017 The Android Open Source Project
*/
//a generic wrapper class that describes a data with a status
public class Resource<T> {
@NonNull
public final Status status;
@Nullable
public final T data;
@Nullable public final String message;
//couple the activity with the view model
viewModel = ViewModelProviders.of(this).get(MainActivityViewModel.class);
//subscribe to LiveData
viewModel.getRecipesListObservable().observe(MainActivity.this, new Observer<Resource<List<Recipe>>>() {
@Override
public void onChanged(@Nullable Resource<List<Recipe>> recipes) {
Timber.d(recipes.status.toString());
}
});
//ask the viewmodel for data (maybe an event happened?or onCreate?)
public void getData(){
mRepository.fetchData();
}
@tpakis
tpakis / gist:674e551600dc01c127864ffea9211a22
Last active April 30, 2018 12:23
Repository fetchData
public void fetchData(){
List<Recipe> loadingList = null;
if (recipesListObservable.getValue()!=null){
loadingList=recipesListObservable.getValue().data;
}
recipesListObservable.setValue(Resource.loading(loadingList));
loadAllRecipesFromDB();
getRecipesFromWeb();
}
@tpakis
tpakis / loadAllRecipesFromDB
Last active April 30, 2018 12:24
Async call to load from
private void loadAllRecipesFromDB() {
Timber.d("loadAllRecipesFromDB");
new AsyncTask<Void, Void, List<Recipe>>() {
@Override
protected List<Recipe> doInBackground(Void...a) {
return recipesDAO.getAllEntries();
}
@Override
protected void onPostExecute(List<Recipe> results) {
private void getRecipesFromWeb(){
Timber.d("getRecipesFromWeb");
recipeApi.getRecipesFromWeb().enqueue(new Callback<List<Recipe>>() {
@Override
public void onResponse(Call<List<Recipe>> call, Response<List<Recipe>> response) {
if (response.isSuccessful()) {
setRecipesListObservableStatus(Status.SUCCESS,null);
addRecipesToDB(response.body());
} else {
// error case